gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:40:39 25 4
gpt4 key购买 nike

我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com