29

I have installed the Go extension for VS Code, but unable to make it work.

"dlv debug" works alright from the terminal.

dlv debug src/github.com/user/hello

The launch.json:

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

Do you know how to set it up?

4

5 回答 5

68

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

( Note: for Windows OS replace all $GOPATH with %GOPATH% )
  • 安装最新的 GolangGOROOT并设置GOPATH
  • 添加$GOPATH/bin到您的操作系统PATH环境变量。
  • 设置环境变量:GO15VENDOREXPERIMENT = 1
  • 运行:go get github.com/derekparker/delve/cmd/dlv 并确保dlv在您的$GOPATH/bin
  • 安装Visual Studio 代码
  • 启动 VS Code 快速打开 ( Ctrl+ P),粘贴此命令:ext install Go,然后按 Enter。
  • 点击安装Rich Go language support for Visual Studio Code
  • 单击Enable并重新启动 Visual Studio Code
  • Visual Studio Code打开文件夹Ctrl++中,例如ShiftE$GOPATH\src\hello\
  • 然后hello.go从该文件夹打开(或创建新文件Ctrl+N并将其保存在此文件夹中):
package main

import "fmt"

func main() {
    fmt.Println("Hello World!")
    i := 101
    fmt.Println(i)
}
  • 然后打开调试器Ctrl++ShiftD
  • 在这一行:i := 101按下F9以设置或切换断点。
  • 如果要求选择环境,请按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
        }
    ]
}

结果:

在此处输入图像描述

于 2016-08-21T09:24:30.937 回答
4

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 变量参考:如果文件/home/your-username/your-project/folder/main.go在 VSCode 中打开并且

directory/home/your-username/your-project是您的根工作区,然后

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

${文件目录名} =/home/your-username/your-project/folder


我的具体价值观:

$GOROOT:/usr/local/go

$GOPATH:/Users/myname/code

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

${文件目录名}:/Users/myname/code/src/github.com/githubName/appName

于 2019-09-01T14:49:43.180 回答
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

于 2021-08-04T13:38:18.540 回答
0

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

解决方案也发布在那里:

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

于 2017-10-09T17:28:53.553 回答
0

用于 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
                }
            ]
        },
    }
]

}

于 2018-04-13T15:14:29.593 回答