提问人:user21980941 提问时间:5/30/2023 最后编辑:Taimoor Mirzauser21980941 更新时间:6/1/2023 访问量:156
为什么在具有端口转发的容器中的远程调试会话期间,“dlv connect”会导致“命令失败:连接已关闭”?
Why does 'dlv connect' result in 'Command failed: connection is shut down' during remote debugging session in a container with port-forwarding?
问:
dlv connect 导致命令失败:连接已关闭
我想远程连接到 delve(Go 调试器),并在容器中为进程运行调试会话。但是当我进行 dlv 连接时,它需要很长时间才能连接,但一旦连接,端口转发连接就会丢失,并使连接的调试会话变得无用。
- 您使用的是哪个版本的 Delve(dlv 版本)?版本: 1.20.2
- 你用的是哪个版本的 Go?(去版)?GO1.20.1 Linux/AMD64的
- 您使用的是什么操作系统和处理器架构?具有 ubuntu/bionic64 的 VM
- 你做了什么?
我已经深入研究了一个容器并进行了端口转发以从主机进行调试。当我发出命令时,这需要很长时间才能显示:dlv connect localhost:40000 --api-version=2 --log
Type 'help' for list of commands.
DLV 端口转发显示以下输出:
Handling connection for 40000 E0529 05:04:24.566631 7075 portforward.go:409] an error occurred forwarding 40000 -> 40000: error forwarding port 40000 to pod 10b0190afd8de916d3574fe2a020652c7d40e9bae7a64041f223f09bf830457c, uid : failed to execute portforward in network namespace "host": failed to connect to localhost:40000 inside namespace "10b0190afd8de916d3574fe2a020652c7d40e9bae7a64041f223f09bf830457c", IPv4: dial tcp4 127.0.0.1:40000: connect: cannot assign requested address IPv6 dial tcp6: address localhost: no suitable address found error: lost connection to pod
因此,调试会话中的任何其他命令都会导致命令失败:连接已关闭 例如:
dlv connect localhost:40000 --api-version=2 --log Type 'help' for list of commands. (dlv) list main.main Command failed: connection is shut down (dlv) bp Command failed: connection is shut down (dlv) q connection is shut down
你期待看到什么? 远程调试运行顺利。预计不会丢失连接。
你看到了什么? 命令失败:连接已关闭 无法执行调试。
我的容器包含以下命令:
CMD ["/dlv", "--listen=:40000", "--headless=true", "--api-version=2", "--accept-multiclient", "exec", "/usr/local/bin/app"]
我怎样才能解决这个问题,以便有一个顺利的远程调试会话?
答: 暂无答案
评论