1

这是一个实时 MMO 客户端,在某个随机点它会崩溃并跳转到 0,并且堆栈帧不可读。崩溃报告器(和 GDB)将报告线程 0 崩溃:

XC_BAD_ACCESS (SIGBUS)
KERN_PROTECTION_FAILURE at 0x0000000000000000

srr0=lr=exception address=0

我怎样才能发现这个错误发生在哪里?

4

1 回答 1

0

如果您的堆栈指针 ( r1) 和链接寄存器被丢弃,那么它看起来并不好。但是,其他一些寄存器可能仍然具有帧指针的值 - 例如,经常看到非叶函数将地址移动到它们通过r0.

除此之外,您还可以使用一些技巧-假设在地址处的进程地址空间中没有任何映射0x0(这似乎是EXEC_BAD_ACCESS错误的情况),您可以编写一个简单的预加载库来映射零页;这将允许您在0x0;添加断点 这可能会为您提供有关正在发生的事情的更多信息。

于 2009-06-29T21:33:34.003 回答