登录
首页 >  Golang >  Go问答

如何退出连接到无头服务器的 dlv 而不终止远程进程

来源:stackoverflow

时间:2024-04-11 17:39:33 213浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《如何退出连接到无头服务器的 dlv 而不终止远程进程》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

这个问题是关于使用 delve 调试器远程调试 golang 代码。具体来说,如何在不终止远程进程的情况下断开客户端调试器的连接。

我在 docker 容器内运行一个需要调试的进程。该进程在 docker 的入口点通过以下方式启动 dlv 调试 /go/src/path/to/package --headless --listen=:2345 --log

docker 容器通过以下方式启动 docker 运行 --rm -it -p 2345:2345 my_image:tag

从我的工作站,我通过以下方式连接到 delve 无头服务器

$dlv connect :2345
type 'help' for list of commands.
(dlv)

那时我做了一些调试。完成后,我希望能够在不终止正在调试的进程的情况下断开与无头服务器的连接。

(dlv) exit

不幸的是,上面的命令断开了 delve 客户端与无头服务器的连接,并且还终止了我正在调试的远程进程,并且由于那是 docker 容器的入口点,因此容器停止。我想避免因终止远程进程而断开连接,如何?

我查看了 (dlv) exit 的参数,但看不到有帮助的参数。

(dlv) help exit
Exit the debugger.

        exit [-c]

When connected to a headless instance started with the --accept-multiclient, pass -c to resume the execution of the target process before disconnecting.
(dlv) exit -c
Command failed: not connected to an --accept-multiclient server

解决方案


使用以下参数启动 delve:

dlv debug /go/src/path/to/package --headless --listen=:2345 --log --continue --accept-multiclient

这将在启动时继续调试过程,并允许您从 delve 客户端使用 exit -c。确保清除所有断点,否则您的进程将陷入困境。

来源:https://github.com/go-delve/delve/issues/2324#issuecomment-1024700094

理论要掌握,实操不能落!以上关于《如何退出连接到无头服务器的 dlv 而不终止远程进程》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>