VS Code 缺省情况下,会启用调试控制台,这样程序在终端的输出都会在调试控制台里。

一般情况下,这也没啥不妥的。但是,特殊情况下,如想模拟调试用户在终端向程序发出Ctrl+C的情况时,就麻烦了。这时的调试控制台不接受Ctrl+C。只能在菜单中选择“停止调试”。但是,这是直接Kill了被调试进程,显然与在终端中输入Ctrl+C不同。
还是希望调试环境与实际运行环境一致。找到一个配置选项,在VS Code的launch.json中添加console字段,如下所示:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Package",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${workspaceFolder}",
"args": [],
"console": "integratedTerminal"
}
]
}
这样,就把调试环境的终端从调试控制台改成VS Code内置集成的终端了。这时,就可以在终端中输入Ctrl+C,被调试进程也能正常接收Ctrl+C信号了。
实践中发现,这个配置选项与之前用于指示软链接实际路径的选项substitutePath,详见《VS Code 调试 Go设置断点无效解决方法》有冲突。有了这个选项,substitutePath就不需要了。也就是说,console字段也解决了目录软链接引发的错误。