我正在使用GDB来调试Yosemite OSX上的程序。在断点处,我想使用内部函数打印出一些信息,但即使使用一个简单的函数我也会收到SIGBUS错误。例如:
Breakpoint 1, ...
(gdb) print my_info_function()
Program received signal SIGBUS, Bus error.
<function called from gdb>
The program being debugged was signaled...
其中my_info_function
是:
const char *my_info_function() {
return "hello";
}
此外,如果我使用gdb运行程序,然后在运行时将其中断,那么,无论中断是在上述断点之前还是之后发生,print my_info_function()
都能正常工作。
这个问题似乎是在升级到Yosemite(来自Lion)后开始发生的,所以我倾向于认为它与此有关。我尝试使用不同的编译器(clang,gcc-4.9,brew vs macports),并使用/重新安装/重建不同的gdb(brew,macports,以及this brew gdb version),但都无济于事。
有关如何解决此问题的任何建议?我正在使用emacs + gdb,并希望保持这种方式。我可能对emacs + lldb没问题,但似乎有关于是否/什么时候支持它的争论。
答案 0 :(得分:1)
有关如何解决此问题的任何建议吗?
这看起来像是GDB中的一个错误。
您可以尝试从源代码构建GDB,使用自身调试GDB,然后向gdb-patches mailing list发送补丁,或者只在GDB bugzilla中报告(并希望其他人修复它)。