调试Go with GDB时的奇怪行为

时间:2014-06-04 21:33:00

标签: debugging go gdb

我有一个Go程序,我正在使用GDB进行调试(也就是Eclipse / Goclipse,但它使用GDB,所以它都是一样的)。偶尔,当我告诉GDB next时,它就像我告诉continuefinish一样。它就像可执行文件中缺少堆栈/帧/ etc信息一样。帮助

gdb -v给出:

  

版权所有(C)2013 Free Software Foundation,Inc。   许可证GPLv3 +:GNU GPL版本3或更高版本http://gnu.org/licenses/gpl.html   这是免费软件:您可以自由更改并重新分发它。   在法律允许的范围内,不提供任何担保。键入"显示复制"   并且"显示保修"详情。   此GDB配置为" x86_64-apple-darwin13.1.0"。   有关错误报告说明,请参阅:   http://www.gnu.org/software/gdb/bugs/

go -v给出:

  

go go go1.2.1 darwin / amd64

两者都在OSX.9下安装了MacPorts

1 个答案:

答案 0 :(得分:2)

它不仅仅是OSX。 gdb并不是真正理解,并且不能总是遵循goroutines,因为它们可以在OS线程中进行调度。

你总是可以尝试稍后用另一个断点再次捕捉执行,但我不认为你可以做很多其他事情。

GDB对堆栈跟踪和断点仍然有用,但在可预见的将来,单步执行代码并不能可靠地工作。 golang dev邮件列表中有关于不断改进gdb而不是放弃它以支持新事物的讨论。但没有发布任何公告。