Golang Delve,如何启动调试器并开始调试应用程序?

8

我正在尝试设置一个无头的 Delve 调试器,以便可以远程附加到它。

我无法找到一种启动调试服务器而不暂停正在调试的应用程序的方法。

我一直在使用 dlv attach --headless=true --listen=:2345 attach 32,但这会暂停进程。
或者如果允许 app 二进制文件运行,我可以使用 dlv --headless=true --listen=:2345 exec app

我不知道init文件是否可以做到这样的事情? 我找不到任何关于它实际上是什么的文档。


请检查新选项 --continue 是否有帮助:请参见我的编辑答案 - VonC
1个回答

6
如果您考虑 delve issue 145,那么这可能是一个功能而不是漏洞:

我认为没有必要在不暂停的情况下开始实际的调试会话,除非您仅依靠提供一个 init 文件(用于加载断点/跟踪点),然后希望立即继续执行,此时您可以在 init 文件的末尾编写一个 continue 命令。

使用 trace 子命令,您已经可以设置跟踪点而不需要无限期地停止程序,并且该子命令需要一个 pid 标志。


话虽如此,在Delve 1.3.0(2019年8月,两年后):

go-delve/delve issue 245已由PR 1585解决。

cmd/dlv: 添加 --continue 以在启动/附加时继续进程

添加 --continue 选项,用于 attachdebugexectrace,以在启动时发出 continue

此功能的主要用途是启动一个无界面的 delve 服务器(例如在容器内)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接