gdb on Yosemite:在 gdb 命令行调用函数时出现 SIGBUS 错误

gdb on Yosemite: SIGBUS error when calling function at gdb command line

我正在使用 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,然后在运行ning的时候中断它,那么,不管中断发生在上述断点之前还是之后,print my_info_function() 工作正常。

这个问题似乎是在升级到 Yosemite(来自 Lion)之后开始出现的,所以我倾向于认为它与此有关。我尝试使用不同的编译器(clang、gcc-4.9、brew vs macports),并使用/重新安装/重建不同的 gdb(brew、macports 以及 this brew gdb version),但都无济于事。

关于如何解决这个问题有什么建议吗?我正在使用 emacs + gdb 并希望保持这种状态。我可能对 emacs + lldb 没问题,但似乎有一些关于 whether/when 将被支持的争论。

Any suggestions as to how to fix this?

这看起来像是 GDB 中的错误。

您可以尝试从源代码构建 GDB,自行调试 GDB,然后将补丁发送到 gdb-patches mailing list, or just report it in GDB bugzilla(并希望其他人修复它)。