我正在尝试分析 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 的其他事情:-)
最佳答案
这些是 ARM 处理器的寄存器,因为它们用于相关线程。
对于大多数 rX 寄存器,您可以更好地将它们视为指向对象的指针,而不是对象本身。但是,它们也可以保存直接值或地址。
“pc”寄存器包含处理器尝试执行的代码的最后一个地址。这对于区分由于尝试取消引用 nil 指针和尝试从地址零执行代码而导致的 EXC_BAD_ACCESS 之间的差异很有用。
您可以在此处找到 Apple 的使用文档: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARMv6FunctionCallingConventions.html
关于iphone - 崩溃日志 : What is "ARM Thread State",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6662176/