mip*_*pnw 6 go visual-studio-code delve vscode-debugger
我在需要调试的 docker 容器内运行一个进程。该进程在 docker 的入口点 via 启动
dlv debug /go/src/path/to/package --headless --listen=:2345 --log,以便稍后在 VSCode 中启用调试。
docker 容器通过 启动
docker run --rm -it -p 2345:2345 my_image: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
}
]
}
Run Code Online (Sandbox Code Playgroud)
虽然不是很清楚,但该 UI 让我相信我现在已连接到远程无头调试器并准备好进行调试。我定义了一个断点,我知道该断点会被我可以发送远程进程的请求击中。我发送该请求,得到结果,并且该断点从未命中,表明我尚未实现远程调试。
我的 VSCode“附加远程”配置有问题吗?我可以进行命令行调试,dlv connect :2345并且实际上可以很好地调试远程进程,这表明无头服务器功能正常。我宁愿在 VSCode 中使用源代码进行调试。
使用vscode-go 的最新测试版(2020 年 4 月)重试(2020 年 4 月之后的任何时间,最新的官方 vscode-go 版本就足够了)
Microsoft/vscode-go2010 期包括Ramya Rao的确认:
#3108中的修复已在此扩展的最新 Beta 版本中提供。请尝试分享反馈
最新版本的扩展现已修复此问题
和:
我可以确认我现在能够使用 AWS SAM 命中断点来启动包含从 Windows 编译的 delve 和 go 二进制文件的 Linux 容器。
对于仍然遇到此问题的任何人(就像我在编辑此评论之前一样),请注意 launch.json 的“remotePath”元素是在本地系统(而不是容器)上编译的源文件的绝对路径。
如上所述 -它是编译二进制文件时添加到 DWARF 编译单元文件表中的绝对本地路径。
| 归档时间: |
|
| 查看次数: |
8201 次 |
| 最近记录: |