【问题标题】:gdb on Yosemite: SIGBUS error when calling function at gdb command line优胜美地上的 gdb:在 gdb 命令行调用函数时出现 SIGBUS 错误
【发布时间】:2015-04-05 04:43:27
【问题描述】:

我正在使用 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 没问题,但似乎关于是否/何时支持它存在一些争论。

【问题讨论】:

  • 单步执行main 是否有效?或者只是当你调用一个函数时?
  • 在 main 首次启动和多线程之前工作。仔细观察,似乎只有在子线程上运行的代码处触发断点时才能重现。值得一提的是,在 lldb 中进行的相同调试练习按预期进行(没问题)。

标签: c debugging emacs gdb osx-yosemite


【解决方案1】:

关于如何解决此问题的任何建议?

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

您可以尝试从源代码构建 GDB,自行调试 GDB,然后将补丁发送到 gdb-patches mailing list,或者直接在 GDB bugzilla 中报告(并希望其他人修复它)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    相关资源
    最近更新 更多