实现效果

安装 delve

windows

go get -u github.com/go-delve/delve/cmd/dlv

linux

go get -u github.com/go-delve/delve/cmd/dlv
$ git clone https://github.com/go-delve/delve.git $GOPATH/src/github.com/go-delve/delve
$ cd $GOPATH/src/github.com/go-delve/delve
$ make install
GO15VENDOREXPERIMENT=1

OSX

$ go get -u github.com/go-delve/delve/cmd/dlv

执行上述代码前,确保你电脑上有编译工具

设置 launch.json 配置文件

ctrl+shift+pDebug: Open launch.jsonlaunch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${fileDirname}",
            "env": {},
            "args": []
        }
    ]
}

常见属性如下

autodebugremotetestexec{ "ENVNAME": "ENVVALUE" }envenvFiledebuggergdbwirelldboutdebuglineerrrpcshowLogtruemode remote

在 debug 配置中使用 VS Code 变量

  • ${workspaceFolder} 调试 VS Code 打开工作空间的根目录下的所有文件
  • ${file} 调试当前文件
  • ${fileDirname} 调试当前文件所在目录下的所有文件

使用构建标记(build tags)

buildFlags -tags=whatever_tag""-tags='first_tag second_tag third_tag'"

debug 配置代码片段

launch.jsonGodebug

调试当前文件配置片段

{
    "name": "Launch file",
    "type": "go",
    "request": "launch",
    "mode": "auto",
    "program": "${file}"
}

调试单个测试用例配置片段

{
    "name": "Launch test function",
    "type": "go",
    "request": "launch",
    "mode": "test",
    "program": "${workspaceFolder}",
    "args": [
        "-test.run",
        "MyTestFunction"
    ]
}

调试包中所有的测试用例配置片段

{
    "name": "Launch test package",
    "type": "go",
    "request": "launch",
    "mode": "test",
    "program": "${workspaceFolder}"
}

调试构建二进制文件配置片段

{
    "name": "Launch executable",
    "type": "go",
    "request": "launch",
    "mode": "exec",
    "program": "absolute-path-to-the-executable"
}

远程调试

Delve
$ dlv debug --headless --listen=:2345 --log --api-version=2
Delve
dlv debug --headless --listen=:2345 --log -- -myArg=123
launch.json
{
    "name": "Launch remote",
    "type": "go",
    "request": "launch",
    "mode": "remote",
    "remotePath": "服务器调试文件的目录(绝对路径)",
    "port": 2345,
    "host": "127.0.0.1",
    "program": "本地调试文件所在的目录(绝对路径)",
    "env": {}
}
hostportDelveremotePathprogram remotePath
VS Codedlvdlv

参考链接