实现效果
安装 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