Mac M1环境下VSCode调试Golang程序遇两类错误求助
Mac M1下VSCode调试Go程序的配置修复方案
第一个问题:${fileDirname}引发的编译错误
你用${fileDirname}当program路径时,如果当前打开的是.vscode/launch.json,这个变量会直接指向.vscode目录——这里本来就没有Go源码,肯定编译失败。根据你的调试场景改就行:
- 要调试当前打开的单个Go文件(比如main.go),把
program改成${file}:"program": "${file}" - 要调试整个项目,直接用VSCode的工作区根目录变量
${workspaceFolder},它会自动定位到你打开的项目根路径:"program": "${workspaceFolder}"
第二个问题:调试时出现“Unable to process evaluate: debuggee is running”
这个错误是因为程序一直在运行,没停在断点上,此时没法执行求值操作。按下面的方法解决:
- 先加断点:在你要暂停的代码行左边点一下,出现红色圆点就行。启动调试后程序会自动停在断点,这时就能正常用evaluate功能了。
- 让程序启动即停:在launch.json里加
"stopOnEntry": true,这样程序一启动就会停在main函数的第一行,不用手动加断点也能操作:{ "version": "0.2.0", "configurations": [ { "name": "启动Go调试", "type": "go", "request": "launch", "mode": "debug", "program": "${workspaceFolder}", "stopOnEntry": true } ] } - 检查版本兼容性:你的dlv 1.20.1对应Go 1.20是兼容的,但如果Go版本和dlv不匹配也会出问题。执行
dlv version和go version确认,版本不对的话更新dlv:go install github.com/go-delve/delve/cmd/dlv@latest - 更新VSCode Go插件:旧版本插件可能和M1、dlv有兼容问题,去插件市场把Go插件更到最新版。
完整的launch.json示例(适配M1项目调试)
{ "version": "0.2.0", "configurations": [ { "name": "调试Go项目", "type": "go", "request": "launch", "mode": "debug", "program": "${workspaceFolder}", "stopOnEntry": false, // 需要启动即停就改成true "args": [], // 程序启动参数按需添加 "env": { "GOOS": "darwin", "GOARCH": "arm64" // 适配M1架构 }, "showLog": false // 调试有问题时开这个看日志 } ] }
内容的提问来源于stack exchange,提问作者Indyarocks
相关产品推荐
相关产品推荐

