如何从终端触发VS Code用Delve调试带参Go程序
该需求完全可以实现
- 本质上VS Code的Go调试底层就是调用dlv,只要搭配VS Code提供的命令行调用能力,就能实现全终端触发流程,不需要手动进入VS Code界面点击调试按钮,你当前终端提前导出的所有bash变量都会被调试进程自动继承,和你本地直接跑dlv的环境变量逻辑完全一致。
- 前置配置只需要做一次:在项目根目录创建
.vscode/launch.json文件,写入如下调试配置,重点指定终端模式保证环境变量正常加载:
{ "version": "0.2.0", "configurations": [ { "name": "terminal-go-debug", "type": "go", "request": "launch", "mode": "debug", "program": "${workspaceFolder}", "console": "integratedTerminal" } ] }
- 配置完成后,直接在终端执行如下命令,就能自动拉起VS Code并启动调试,参数传递逻辑和你常用的dlv命令完全兼容:
code --run-command "workbench.action.debug.start" --launch-config "terminal-go-debug" -- *.go --user=john
命令里
--后面的所有内容,都会作为启动参数直接传给Go程序,和你写的dlv debug *.go --user=john传参规则完全一致,不需要额外适配。
- 如果你更习惯原生dlv的操作逻辑,也可以在bash配置文件里加个自定义函数,一键启动headless dlv并自动完成VS Code附加:
# 将以下内容写入~/.bashrc后执行source生效 vscode-dlv() { dlv debug --headless --listen=:2345 --api-version=2 --accept-multiclient "$@" & code --run-command "go.debug.attach" --args='{"mode":"remote","host":"127.0.0.1","port":2345}' }
生效后你只需要在终端敲vscode-dlv *.go --user=john,就能自动完成全流程调试启动,全程不需要手动操作VS Code界面。
如果终端执行code命令提示不存在,先打开VS Code,按下Ctrl+Shift+P调出命令面板,搜索执行Shell Command: Install 'code' command in PATH,把code命令注册到系统路径即可。
内容的提问来源于stack exchange,提问作者jhurtas
相关产品推荐
相关产品推荐

