【问题标题】:How to use Delve debugger in Visual Studio Code如何在 Visual Studio Code 中使用 Delve 调试器
【发布时间】:2016-12-27 18:46:45
【问题描述】:

我已经为 VS Code 安装了 Go 扩展,但无法使其工作。

“dlv 调试”在终端上可以正常工作。

dlv debug src/github.com/user/hello

launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "program": "${workspaceRoot}",
            "env": {},
            "args": []
        }
    ]
}

你知道怎么设置吗?

【问题讨论】:

    标签: go visual-studio-code delve


    【解决方案1】:

    要在带有 Golang 的 Visual Studio Code 中使用 Delve 调试器,请执行以下步骤:

    ( Note: for Windows OS replace all $GOPATH with %GOPATH% )
    
    • 安装最新的Golang并设置GOROOTGOPATH
    • $GOPATH/bin 添加到您的操作系统PATH 环境变量中。
    • 设置环境变量:GO15VENDOREXPERIMENT = 1
    • 运行:go get github.com/derekparker/delve/cmd/dlv 并确保在您的$GOPATH/bin 中生成dlv 二进制文件
    • 安装Visual Studio Code
    • 启动 VS Code 快速打开 (Ctrl+P),粘贴此命令:ext install Go,然后按 Enter。
    • 点击安装Rich Go language support for Visual Studio Code
    • 点击Enable并重启Visual Studio Code
    • Visual Studio Code内打开文件夹Ctrl+Shift+E,例如:$GOPATH\src\hello\
    • 然后从该文件夹打开hello.go(或创建新文件Ctrl+N并将其保存在该文件夹中):
    package main
    
    import "fmt"
    
    func main() {
        fmt.Println("Hello World!")
        i := 101
        fmt.Println(i)
    }
    
    • 然后打开调试器Ctrl+Shift+D
    • 在这一行:i := 101F9 设置或切换断点。
    • 如果要求选择环境,请按 F5 开始调试或运行应用程序:选择 Go
    • F10 跳过。
    • F11 进入。
    • Shift+F11 退出。
    • Shift+F5 停止调试。
    • Ctrl+Shift+F5 重新开始调试。

    我的launch.json 原封不动:

    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Launch",
                "type": "go",
                "request": "launch",
                "mode": "debug",
                "remotePath": "",
                "port": 2345,
                "host": "127.0.0.1",
                "program": "${workspaceRoot}",
                "env": {},
                "args": [],
                "showLog": true
            }
        ]
    }
    

    结果:

    【讨论】:

    • @chris-g 我希望这会有所帮助。
    • 如果您对 VS Code 有问题,对于新的调试会话,请尝试:File/Close FolderFile/Open FolderFrom Explorer on left panel click hello.go` 并打开它, 按 F9 获取断点, 按F5选择Go , 关闭json文件, 点击调试器, 按F5`
    • 谢谢!虽然我仍然无法让调试器工作。我得到:无法加载包:包。:在 /Users/xx/godeep 退出状态 1 中没有可构建的 Go 源文件
    • 我尝试从终端启动 VS 代码以采用 $GOPATH 并且只是从 Application 文件夹。
    • 请参阅:确保您在 Go 项目源文件夹中使用该命令:stackoverflow.com/questions/24095004/…
    【解决方案2】:

    这个launch.json 帮助我在 VSCode 中运行 Golang 调试器:

    {
      "version": "0.2.0",
      "configurations": [
        {
          "name": "Launch file",
          "type": "go",
          "request": "launch",
          "mode": "auto",
          "program": "${file}",
          "env": {
            "PATH": "/usr/local/go/bin:${fileDirname}"
          },
          "args": []
        }
      ]
    }
    

    VSCode Variables Reference: 如果文件/home/your-username/your-project/folder/main.go在VSCode中打开并且

    目录/home/your-username/your-project 是你的根工作区,那么

    ${file} = /home/your-username/your-project/folder/main.go

    ${fileDirname} = /home/your-username/your-project/folder


    我的具体价值观:

    $GOROOT:/usr/local/go

    $GOPATH:/Users/myname/code

    ${文件}:/Users/myname/code/src/github.com/githubName/appName/main.go

    ${fileDirname}:/Users/myname/code/src/github.com/githubName/appName

    【讨论】:

      【解决方案3】:

      你必须在这里做三件事:

      • 安装 Delve。看您的问题,您似乎已经安装了 Delve。
      • 为 VS Code 安装 Go 扩展。可以在以下位置找到扩展名:https://github.com/golang/vscode-go
      • 为 Go 安装 dlv 工具。您可以通过打开命令面板 (Ctrl+Shift+P / Cmd+Shift+P) 并选择 Go: Install/Update Tools 然后搜索/选择 dlv

      现在您可以在 VS 代码中使用 delve 开始调试了。

      更详细的说明请关注:https://dev.to/nyxtom/debugging-in-go-in-vs-code-1c7f

      【讨论】:

      • 谢谢!这似乎是真正的答案。以上不再相关。
      【解决方案4】:

      FTA(以防万一很难找到),如果使用delve 时出现cannot find package 错误,即使您的GOPATH 设置正确,请查看this bug of vscode-go,它同时影响MAC OS 和Linux,截至 2017 年 10 月。

      解决方案也在那里发布:

      ...在 launch.json 文件的 env 属性中添加 GOPATH 作为 env var 解决了问题

      【讨论】:

        【解决方案5】:

        gdb 和 delve 的内容 launch.json

        {
        // Используйте IntelliSense, чтобы узнать о возможных атрибутах.
        // Наведите указатель мыши, чтобы просмотреть описания существующих атрибутов.
        // Для получения дополнительной информации посетите: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Delve",
                "type": "go",
                "request": "launch",
                "mode": "debug",
                "remotePath": "",
                "port": 2345,
                "host": "127.0.0.1",
                "program": "${workspaceRoot}/src/hello/hello.go",
                "env": {},
                "args": [],
                "showLog": true
            }
           ,
            {
                "type": "gdb",
                "request": "launch",
                "name": "GDB",
        
                "target": "${workspaceRoot}/src/hello/hello",
                "cwd": "${workspaceRoot}",
                "linux": {
                    "MIMode": "gdb",
                    "setupCommands": [
                        {
                            "description": "Enable pretty-printing for gdb",
                            "text": "-enable-pretty-printing",
                            "ignoreFailures": true
                        }
                    ]
                },
            }
        ]
        

        }

        【讨论】:

        • 虽然此代码 sn-p 可以解决问题,但 including an explanation 有助于提高您的回复质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
        猜你喜欢
        • 2019-03-09
        • 1970-01-01
        • 2017-09-20
        • 2021-12-22
        • 2020-07-28
        • 1970-01-01
        • 1970-01-01
        • 2018-02-11
        相关资源
        最近更新 更多