调试Golang代码并将其附加到本地进程

5

我有一段Golang代码,通过go build命令生成了Mac可执行文件,如下:

build darwin amd64 myapp

目前,我可以运行此二进制文件并查看日志。

现在,我想进行调试,是否有办法使用 GolandIntellij 或者 VSCode 调试二进制文件?常规的 delve 调试工具可以从上述所有IDE中使用,但现在我想将其附加到我能够运行的二进制进程中,请问这是否可能?


你尝试过Delve的attach命令吗? - JimB
@JimB - 我尝试使用新的Goland附加到本地进程,我能够在打开的对话框中看到该进程,但无法调试它,出现错误“无法附加到pid 97234:EOF”。 - 07_05_GuyT
@JimB - 我已经安装了 delve 调试器,但我使用 vsCodeGoland 内部调试。您能否提供一下步骤,让我尝试使用附加命令进行调试?我会尽快完成。 - 07_05_GuyT
你可能会看到这个链接:https://github.com/derekparker/delve/issues/1165 -- 首先尝试从命令行运行,以确定是编辑器集成的问题还是工具本身的问题。 - JimB
1个回答

5
如果你使用的是 GoLand 2018.1+ 版本,你应该能够使用“Run | Attach to Local Process”功能来调试正在运行的二进制文件。
我建议你关闭所有优化选项,并使用 Go 1.10+ 编译,以便获得最佳的调试体验。
此外,这个IDE可以在单击一个按钮的情况下启动并调试二进制文件,省去了多个步骤。
另外要提到的是,由于苹果在最新的开发者工具中引入了一个错误,所以你目前将无法通过 Delve 正确调试Go应用程序,无论你使用哪个编辑器。有关更多信息,请参见我们跟踪器上的这个问题: https://youtrack.jetbrains.com/issue/GO-5527 和 Delve 的跟踪器上的这个问题: https://github.com/derekparker/delve/issues/1165 编辑:上述问题已在GoLand 2018.1.1中得到解决。

非常感谢,还有一个问题,如果我使用解决方法,它应该如何工作?我打开cli并执行二进制文件,然后转到Goland并使用附加到本地进程,但是在单击进程对话框并查找PID之前,我会浪费一些时间,我应该做出不同的选择吗? - 07_05_GuyT
你回答了我的第一个问题,我会关闭它,如果你能看一下评论,那就太好了...谢谢。 - 07_05_GuyT
我们刚刚发布了一个 IDE 的更新,这应该会让调试再次变得可能,而无需您进行任何解决方法。请尝试一下,如果仍然无法工作,请在我链接的问题中留言回复。非常感谢您,对造成的不便表示抱歉! - dlsniper
谢谢,只有两个问题:更新后我应该删除“使用本地后端”吗? - 07_05_GuyT
1
最新的Goland 2018.1.1应该已经修复了OSX的问题。 - Heiko Rupp
显示剩余2条评论

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