我在一个 Docker 容器中运行了一个需要调试的进程。该进程通过以下方式在 Docker 的入口点启动:
Docker 容器是通过以下命令启动的:
在 VSCode 中,我按如下方式定义了
在启动“附加远程”VSCode调试配置时,我会得到。虽然不是非常清晰,但这个UI让我相信我现在已经连接到远程无头调试器并准备好进行调试。我定义了一个断点,我知道通过发送给远程进程的请求将被命中。我发送了该请求,我得到了结果,但该断点从未被触发,表明我尚未实现远程调试。我的VSCode“附加远程”配置有问题吗?我可以使用
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
}
]
}
在启动“附加远程”VSCode调试配置时,我会得到。虽然不是非常清晰,但这个UI让我相信我现在已经连接到远程无头调试器并准备好进行调试。我定义了一个断点,我知道通过发送给远程进程的请求将被命中。我发送了该请求,我得到了结果,但该断点从未被触发,表明我尚未实现远程调试。我的VSCode“附加远程”配置有问题吗?我可以使用
dlv connect :2345
进行命令行调试,并且实际上可以很好地调试远程进程,这表明无头服务器是正常的。但我更愿意在VSCode中使用源代码进行调试。