Crashlogs:什么是“ARM线程状态”

时间:2011-07-12 09:40:52

标签: iphone crash

我正在尝试分析iPhone崩溃报告。

还有一些我不明白的事情:

Thread 6 crashed with ARM Thread State:
r0: 0x00000000    r1: 0x00000000      r2: 0x00000001      r3: 0x00000000
r4: 0x077aa000    r5: 0x00000006      r6: 0x0010540c      r7: 0x077a9198
r8: 0x001a0420    r9: 0x00000065     r10: 0x3fcb8acc     r11: 0x310d1b68
ip: 0x00000148    sp: 0x077a918c      lr: 0x36ba33bb      pc: 0x32a29a1c
cpsr: 0x00000010

什么是r0,r1,rx ??

当我看到:

r3: 0x00000000

我可以假设“对象”r3是零吗?

欢迎任何帮助了解有关carshlogs的其他事项: - )

1 个答案:

答案 0 :(得分:6)

这些是ARM处理器的寄存器,因为它们适用于相关线程。

对于大多数rX寄存器,您可以更好地将它们视为对象的指针而不是对象本身。但是,它们也可以包含直接值或地址。

'pc'寄存器包含处理器尝试执行的最后一个代码地址。这有助于区分尝试取消引用nil指针和尝试从地址0执行代码所导致的EXC_BAD_ACCESS之间的区别。

您可以在此处找到Apple的使用文档: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARMv6FunctionCallingConventions.html