我有一个Go程序,我正在使用GDB进行调试(也就是Eclipse / Goclipse,但它使用GDB,所以它都是一样的)。偶尔,当我告诉GDB next
时,它就像我告诉continue
或finish
一样。它就像可执行文件中缺少堆栈/帧/ 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
答案 0 :(得分:2)
它不仅仅是OSX。 gdb并不是真正理解,并且不能总是遵循goroutines,因为它们可以在OS线程中进行调度。
你总是可以尝试稍后用另一个断点再次捕捉执行,但我不认为你可以做很多其他事情。
GDB对堆栈跟踪和断点仍然有用,但在可预见的将来,单步执行代码并不能可靠地工作。 golang dev邮件列表中有关于不断改进gdb而不是放弃它以支持新事物的讨论。但没有发布任何公告。