考虑调试以下代码:
package main
import "os"
func main() {
os.Args = append(os.Args, "help")
}
Run Code Online (Sandbox Code Playgroud)
为了使用命令行参数测试它,我创建了 launch.json,如下所示:
{
"version": "0.2.0",
"configurations": [
{
"name": "Test args",
"type": "go",
"request": "launch",
"mode": "test",
"program": "${file}",
"env": {},
"args": ["-test.v","--","arg1","arg2","arg3"]
}
]
}
Run Code Online (Sandbox Code Playgroud)
当我从 VS Code 中的“运行”和“调试”运行“测试参数配置”时,收到一条错误消息
启动失败:无法启动进程:打开/mypath/__debug_bin:没有这样的文件或目录
此错误是因为由于某种原因 dlv 无法从 VS Code 下创建“中间”二进制文件 __debug_bin。
但是,当我直接从命令行运行 dlv 时
dlv 调试 -- arg1 arg2 arg3
它按预期工作,在 /mypath 目录中创建 __debug_bin ,并且所有进一步的调试功能(设置断点、单步执行/进入、打印变量等)都可用。
此外,如果我首先从命令行运行 dlv debug(从而创建 __debug_bin),然后(不退出 dlv)切换到 VS Code 并从运行和调试运行测试参数,它也可以工作。这意味着 VS Code(以及幕后某处的 dlv)捕获此 …