2011-07-12 16 views
5

Estoy tratando de analizar informes de bloqueo de iPhone.Crashlogs: ¿Qué es "Estado de subproceso ARM"

Y hay algo que no entiendo:

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 

¿Cuáles son r0, r1, rx ??

cuando veo que:

r3: 0x00000000 

¿Puedo suponer que un "objeto" R3 es nulo?

Cualquier ayuda a entender otras cosas sobre carshlogs es bienvenida :-)

+0

Tome un vistazo a los vídeos para WWDC2010 creo sesión 317, que le guían a través de lo que significan los registros de errores. Lo principal para enfocarse en ellos es buscar el hilo que se colgó y buscar el nombre de su aplicación en la pila para determinar en qué punto se estrelló. –

Respuesta

5

Estos son los registros del procesador ARM como lo fueron para el hilo en cuestión.

Para la mayoría de los registros de rX, puede considerarlos como punteros a objetos distintos de los objetos. Sin embargo, también pueden contener valores directos o direcciones.

El registro 'pc' contiene la última dirección de código que el procesador intentó ejecutar. Esto es útil para saber la diferencia entre EXC_BAD_ACCESS causado por intentar desreferenciar un puntero nulo e intentar ejecutar el código desde la dirección cero.

Puede encontrar documentación de su uso aquí de Apple: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARMv6FunctionCallingConventions.html