eclipse - 如何使用 GoClipse 调试 Go 程序?

标签 eclipse debugging go gdb goclipse

我在 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 语言编写的(并且没有可用的源代码,这就是你看到汇编程序的原因)。 这是由启动配置选项中的第一个选项控制的,如您在此处所见: Debug options

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

关于eclipse - 如何使用 GoClipse 调试 Go 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24561329/

相关文章:

c++ - Eclipse for C++ 中的 "string could not resolved"错误(Eclipse 无法解析标准库)

linux - 无法加载 JavaHL 库。- linux/eclipse

java - 此 URL 不支持 HTTP 方法 GET - Tomcat

戈兰/ Gin : How to disable the "Found." link on HTTP redirect

java - 编译单元不在 Java 项目的构建路径上 - Maven

debugging - 如何在不暂停的情况下使用 gdb 调试进程?

android - 工具似乎落后于Android模拟器

java - 为什么在调用以接口(interface)作为构造函数参数的类时出现 'source not found' 错误?

json - 从 Java 到 Golang : Unmarshaling Polymorphic JSON

go - exec.Command 输出中的 "Bad value "