我在 OS X Mavericks 上使用 Go (go1.3 darwin/amd6) 和 GoClipse 0.8...
运行调试器时遇到问题(设置断点后),所以我搜索了 Stack Overflow 以及互联网的其余部分,发现我需要安装 gdb。
遵循以下说明(对 T)(通过 HomeBrew 安装 gdb):
http://ntraft.com/installing-gdb-on-os-x-mavericks/
现在,当我放置一个断点并通过 Eclipse 的调试器运行我的 go 程序时,它会逐步执行汇编代码而不是 Go 代码:
例如
我的 go 程序中的这一行设置了一个断点:
responses := [] *HttpResponse{}
当我运行调试器时,它打开了一个名为:
rt0_darwin_amd64.s
设置它的代码行是:
MOVQ $_rt0_go(SB), AX
当我试图“越过”我的代码时,它一直在通过这些程序集文件这样做...
我不会汇编(而且我想我也没有时间学习它)...有没有使用 Eclipse 调试器调试 Go 程序的简单方法?
最佳答案
当您的 Go 程序停止时,Debug View 会显示什么? (调试 View 显示您的堆栈跟踪)。它是否显示与此类似的堆栈跟踪:
Thread [1] 0 (Suspended : Breakpoint)
main() at rt0_windows_amd64.s:15 0x42a400
KERNEL32!BaseThreadInitThunk() at 0x773259ed
0x0
(注意:对于 OSX,它将是 main() at rt0_darwin_amd64.s
)
如果是这样,这就是正在发生的事情:当您启动程序时,它会在程序启动时自动停止在“main”函数上。但这不是 Go main,而是一个内部运行时“main”函数,它的代码是用 C 语言编写的(并且没有可用的源代码,这就是你看到汇编程序的原因)。 这是由启动配置选项中的第一个选项控制的,如您在此处所见:
您可以将其更改为“main.main”以停止在实际的 Go main 上,或者只是取消选中它。在任何情况下,如果调试器停在那里,您只需单击运行/恢复 (F8) 继续。
关于eclipse - 如何使用 GoClipse 调试 Go 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24561329/