VS Code 调试环境响应Ctrl+C

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字段也解决了目录软链接引发的错误。

发表评论