如何使用VSCode远程调试Go代码
我在docker容器中运行一个需要调试的进程。该过程通过以下方式在docker的入口点启动:如何使用VSCode远程调试Go代码,go,visual-studio-code,vscode-debugger,delve,Go,Visual Studio Code,Vscode Debugger,Delve,我在docker容器中运行一个需要调试的进程。该过程通过以下方式在docker的入口点启动: dlv debug/go/src/path/to/package--headless--listen=:2345--log用于以后在VSCode中启用调试 docker容器通过以下方式启动: docker run--rm-it-p 2345:2345我的图片:tag。注意:delve的端口是暴露的 在VSCode中,我定义launch.json,如下所示: { "version": "0.2.0
dlv debug/go/src/path/to/package--headless--listen=:2345--log
用于以后在VSCode中启用调试
docker容器通过以下方式启动:
docker run--rm-it-p 2345:2345我的图片:tag
。注意:delve的端口是暴露的
在VSCode中,我定义launch.json
,如下所示:
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach remote",
"type": "go",
"request": "attach",
"mode": "remote",
"port": 2345,
"host": "127.0.0.1",
"apiVersion": 1
}
]
}
在启动“附加远程”VSCode调试配置时,我得到
这并不十分清楚,但该UI让我相信我现在已连接到远程无头调试器并准备好进行调试。我定义了一个断点,我知道它会被我可以发送给远程进程的请求击中。我发送了那个请求,得到了一个结果,那个断点从未命中,这表明我还并没有实现远程调试
我的VSCode“附加远程”配置是否有问题?我可以使用dlv connect:2345
进行命令行调试,并实际调试远程进程,这表明headless服务器正常工作。我宁愿用VSCode调试源代码。用(2020年4月)再试一次(2020年4月后的任何时候,最新的VSCode官方发行版就足够了)
包括来自以下方面的确认:
此扩展的最新beta版中提供了来自的修复程序。请尝试分享反馈最新版本的扩展现在已经解决了这个问题 以及: 我可以确认,我现在能够使用AWS SAM来启动一个linux容器,其中包含从Windows编译的delve和go二进制文件 对于仍然存在此问题的任何人(就像我在编辑此评论之前一样),请注意launch.json的“remotePath”元素是在本地系统(而不是容器)上编译的源文件的绝对路径。
如上所述-编译二进制文件时,它是添加到DWARF编译单元文件表中的绝对本地路径