Pac*_*ver 4 eclipse debugging gdb go goclipse
在OS X Mavericks上使用Go(go1.3 darwin/amd6)和GoClipse 0.8 ...
运行调试器时遇到了问题(在设置断点之后),因此我搜索了Stack Overflow以及其他Internet,发现我需要安装gdb.
按照以下说明(到T)(通过HomeBrew安装gdb):
http://ntraft.com/installing-gdb-on-os-x-mavericks/
现在,当我通过Eclipse的调试器放置一个断点和Run my go程序时,它会逐步执行汇编代码而不是Go代码:
例如
在我的go程序中设置了这一行的断点:
responses := [] *HttpResponse{}
Run Code Online (Sandbox Code Playgroud)
当我运行调试器时,它打开了一个名为的文件:
rt0_darwin_amd64.s
并且它所设置的代码行是:
MOVQ $_rt0_go(SB), AX
Run Code Online (Sandbox Code Playgroud)
当我试图"跳过"我的代码时,它通过这些汇编文件继续这样做......
我不知道汇编(并且不认为我有时间学习它)...有没有一种使用Eclipse调试器调试Go程序的简单方法?
当Go程序停止时,Debug视图会显示什么?(Debug视图显示了堆栈跟踪).它是否显示类似于此的堆栈跟踪:
Thread [1] 0 (Suspended : Breakpoint)
main() at rt0_windows_amd64.s:15 0x42a400
KERNEL32!BaseThreadInitThunk() at 0x773259ed
0x0
Run Code Online (Sandbox Code Playgroud)
(注意:对于OSX,它会是main() at rt0_darwin_amd64.s)
如果是这样,以下是正在发生的事情:启动程序时,它会在程序启动时自动停止在"main"功能上.但这不是Go main,而是一个内部运行时"main"函数,其代码用C语言编写(并且没有可用的源代码,这就是为什么你看到汇编程序).这由启动配置选项中的第一个选项控制,如下所示:

您可以将其更改为"main.main"以停在实际的Go main上,或者只是取消选中它.在任何情况下,如果调试器停在那里,您只需单击运行/恢复(F8)继续.