我正在使用 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 没问题,但似乎对是否/何时支持它存在一些争论。
最佳答案
Any suggestions as to how to fix this?
这看起来像是 GDB 中的错误。
您可以尝试从源代码构建 GDB,自行调试 GDB,然后将补丁发送到 gdb-patches mailing list , 或者直接在 GDB bugzilla 中报告(并希望有人修复它)。
关于c - 优胜美地 : SIGBUS error when calling function at gdb command line 上的 gdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29439993/