远程调试

要使用 VS Code 进行远程调试, 那么需要在远程服务器上运行 headless delve 服务。下面这个示例假定了 你要调试的程序与你在同一目录下, 如果没有, 请参考dlv debug命令上的用法文档
“`

在远程服务器上启动 delve 服务

$ dlv debug –headless –listen=:2345 –log –api-version=2
如果需要传递参数到程序, 必须通过Delve 服务传递,例如:

$ dlv debug –headless –listen=:2345 –log – -myArg=123

然后在 VS Code 中创建一个远程调试的launch.json
json
{
“name”: “Launch remote”,
“type”: “go”,
“request”: “launch”,
“mode”: “remote”,
“remotePath”: “absolute-path-to-the-file-being-debugged-on-the-remote-machine”,
“host”: “127.0.0.1”, # 目标服务器地址
“port”: 2345, # 目标端口
“program”: “absolute-path-to-the-file-on-the-local-machine”,
“env”: {}
}

remotePath应该指向目标服务器中调试文件的绝对路径(在源代码中)
program指向本地计算机上文件的绝对路径,此路径与remotePath对应。
注意: 当选择了这个新的Launch remote配置启动调试器时,VS Code 会将调试命令发送到 目标服务器的
dlv`, 而不是针对应用程序启动它自己的dlv实例。
在 Docker 中调试参考:https://github.com/lukehoban/webapp-go/tree/debugging

一步一步调试

image.png

Troubleshooting

如果在调试Go 代码遇到问题时, 首先应该更新 delve 版本, 确保使用的是最新的 delve, 并且已使用当前的Go版本对其进行了编译。为确保最新版本,请执行命令 Go: Install/Update Tools 选择 dlv, 点击OK

启动调试日志

  • 将调试配置中的showLog属性设置为true。在 delve 的调试控制台可以看到调试日志。
  • 将调试配置中的trace属性设置为log。在调试控制台看到日志的同时也会将日志保存在文件中,日志文件会在调试控制台开头打印出来,注意查看。
  • 将调试配置中的logOutput属性设置为rpc。您看到与 VS Code 和 delve 之间往返的RPC消息相对应的日志。需要将showLog设置为true。
    • logOutput属性与 delve的—log-output标志对应,使用逗号分隔可以输出到多个组价列表。