Golang调试技巧 - Visual Studio编辑器忽略断点问题解决方案

Golang调试技巧 - Visual Studio编辑器忽略断点问题解决方案 大家好,

我正在寻求关于我的 Visual Studio Code 环境的帮助。我使用 "testing" 包来实现 Go 语言测试。过去我一直能够通过我在测试中定义的断点来逐步调试代码。我最近升级了我的 Go 语言版本到 go version go1.17.1 darwin/amd64。我已经确认我的 GOROOT、GOPATH 和 GOBIN 值是正确的。我可以构建所有代码,但无法进行测试并让调试器在断点处停止。

我已经按照所有步骤为我的 Go 语言项目创建了特定的启动配置,参考了 Debugging Go with VS Code - LogRocket Blog

调试时,代码不会在断点处中断/停止。我在“调试控制台”中注意到以下错误:

Warning: working directory ignored with dap; launch requests must specify full program path

对于解决此问题的任何帮助或指导,我将不胜感激。


更多关于Golang调试技巧 - Visual Studio编辑器忽略断点问题解决方案的实战教程也可以访问 https://www.itying.com/category-94-b0.html

4 回复

你尝试过升级你的 Go 工具吗?

更多关于Golang调试技巧 - Visual Studio编辑器忽略断点问题解决方案的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


感谢 Tom 和 Sean 的回复。我最终不得不手动安装 delve 库来解决问题。现在我可以进行调试了。

感谢支持。

这是我的 launch.json 文件,它能正常工作,你的路径配置类似吗? 有时我不得不卸载 Go 插件然后重新安装,这有助于解决一些奇怪的问题。

    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${workspaceFolder}/${workspaceFolderBasename}.go",
            "env": {},
            "args": [
                "-c",
            ],
        },

在 Visual Studio Code 中遇到调试器忽略断点的问题,通常与调试配置或 Go 工具链的兼容性有关。根据你提供的错误信息,问题很可能出在 launch.json 配置上。以下是解决方案:

  1. 更新 launch.json 配置:确保你的调试配置指定了完整的程序路径,而不是依赖工作目录。错误信息提示 working directory ignored with dap,这意味着你需要使用 program 字段来指定绝对路径。

    示例 launch.json 配置:

    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Debug Test",
                "type": "go",
                "request": "launch",
                "mode": "test",
                "program": "${workspaceFolder}/path/to/your/test/file_test.go",
                "args": [],
                "showLog": true
            }
        ]
    }
    

    注意:将 "program" 的值替换为你的测试文件的绝对路径(例如 "${workspaceFolder}/myproject/mypackage_test.go")。${workspaceFolder} 是 VSCode 变量,指向项目根目录。

  2. 启用调试日志:在 launch.json 中添加 "showLog": true 以获取更多调试输出,这有助于诊断问题。运行调试后,检查“调试控制台”中的详细日志。

  3. 验证 Go 工具版本:确保你的 Go 扩展(如 golang.go)是最新版本,并与 Go 1.17.1 兼容。在 VSCode 中,打开扩展面板(Ctrl+Shift+X),搜索 Go 并更新到最新版本。

  4. 检查测试函数:确认你的测试函数遵循 Go 的命名约定(以 Test 开头),并且断点设置在测试函数内部或调用的代码中。例如:

    package mypackage
    
    import "testing"
    
    func TestMyFunction(t *testing.T) {
        result := MyFunction() // 在此行设置断点
        if result != expected {
            t.Errorf("Expected %v, got %v", expected, result)
        }
    }
    
  5. 清理并重建:有时旧的构建文件可能导致问题。运行 go clean -testcache 清理测试缓存,然后重新尝试调试。

如果问题仍然存在,请检查 VSCode 的“输出”面板(选择“Go”频道),查看是否有其他错误消息。这通常能提供更具体的线索。

回到顶部