Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
这是一个实时 MMO 客户端,在某个随机点它会崩溃并跳转到 0,并且堆栈帧不可读。崩溃报告器(和 GDB)将报告线程 0 崩溃:
XC_BAD_ACCESS (SIGBUS) KERN_PROTECTION_FAILURE at 0x0000000000000000
和
srr0=lr=exception address=0
我怎样才能发现这个错误发生在哪里?
如果您的堆栈指针 ( r1) 和链接寄存器被丢弃,那么它看起来并不好。但是,其他一些寄存器可能仍然具有帧指针的值 - 例如,经常看到非叶函数将地址移动到它们通过r0.
r1
r0
除此之外,您还可以使用一些技巧-假设在地址处的进程地址空间中没有任何映射0x0(这似乎是EXEC_BAD_ACCESS错误的情况),您可以编写一个简单的预加载库来映射零页;这将允许您在0x0;添加断点 这可能会为您提供有关正在发生的事情的更多信息。
0x0
EXEC_BAD_ACCESS