Crashlogs : What is "ARM Thread State"

8

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 :-)

iphone
crash
asked on Stack Overflow Jul 12, 2011 by GeorgioA • edited Feb 27, 2014 by Kjuly

1 Answer

8

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

answered on Stack Overflow Dec 25, 2011 by Walt Sellers

User contributions licensed under CC BY-SA 3.0