如何使用GoClipse调试Go程序?

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程序的简单方法?

Bru*_*ros 5

当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)继续.