I'm trying to analyse iPhone Crash Reports.
And there is something that I don't understand :
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
What are r0, r1, rx??
When i see that :
r3: 0x00000000
Can I assume that an "object" r3 is nil ?
Any help to understand other things about carshlogs is welcome :-)
These are the ARM processor's registers as they were for the thread in question.
For most of the rX registers, you can better think of them as pointers to objects than objects themselves. However, they can also hold direct values or addresses.
The 'pc' register contains the last address of code the processor tried to execute. This is useful to tell the difference between EXC_BAD_ACCESS caused by trying to dereference a nil pointer and trying to execute code from address zero.
You can find Apple's documentation of their use here: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARMv6FunctionCallingConventions.html
User contributions licensed under CC BY-SA 3.0