Crash Logs en IOS
Crash Logs en IOS
Crash Logs en IOS
Process Information
Incident Identifier: un ID del reporte.
CrashReporter Key: el device identifier.
Hardware Model: el tipo de dispositivo.
Process: el nombre de la aplicacin; entre corchetes, el ID del proceso de la
aplicacin al momento del crash.
Basic Information: informacin bsica como fecha, versin de iOS, etc.
Exception: el tipo de excepcin que fue generada al momento del crash, el cdigo de la
excepcin y el thread que la gener.
Threads backtraces: una lista de todos los frames activos durante al momento del crash.
Es una lista de las funciones llamadas cuando crashe. Las 4 columnas significan:
Nmero de frame. Ej.: 0
Nombre del binario. Ej.: libobjc.A.dylib
La direccin de la funcin que fue llamada. Ej.: 0x3c6db5be
La primer parte es la direccin que apunta al archivo y la segunda parte es una
direccin que apunta a la lnea de cdigo de ese archivo. Ej.: objc_msgSend +
30
Thread state: valores de los registros al momento del crash. Usualmente no se utiliza
esta seccin porque la anterior dio toda la informacin necesaria para encontrar el
problema.
Binary images: lista todos los binarios que estaban cargados al momento del crash.
Symbolication
Los crash logs por falta de memoria son un poco diferentes a los logs comunes. No hay
registro de los threads de la aplicacin. En lugar de eso, reporta el uso de memoria de
cada uno de los procesos tomando como unidad el nmero de pginas de memoria (4
KB).
Para analizar un crash log por falta de memoria, despus de la seccin con la
informacin del proceso y la bsica sigue la siguiente seccin:
Free pages: se refiere a la memoria disponible. Cada pgina tiene
aproximadamente 4 KB.
Purgeable pages: es la memoria que puede ser limpiada y reutilizada.
Largest process: se reefier a la aplicacin que estaba usando la mayor cantidad
de memoria al momento del crash.
Processes: es una lista de procesos junto con su uso de memoria al momento
del crash. Las columnas ofrecen los siguientes datos:
1) Nombre del proceso
2) ID nico del proceso
3) Nmero de pginas que estn siendo utilizadas por el proceso
6) Se ve el estado de cada aplicacin. Usualmente, la aplicacin que
caus el crash es la aplicacin con el estado f rontmost.
En el reporte va a aparecer la palabra j ettisoned al lado del nombre del proceso que fue
terminado por iOS para liberar memoria. Si esa palabra aparece al lado del nombre de
nuestra aplicacin, significa que la aplicacin fue finalizada por usar demasiada
memoria.
Para resolver este tipo de crashes:
Ver cmo responde la aplicacin a las advertencias por falta de memoria.
Usar Instruments: Allocations y Leaks. Se puede empezar con este tutorial
http://www.raywenderlich.com/2696/how-to-debug-memory-leaks-with-xcode-and
-instruments-tutorial y este otro
http://www.raywenderlich.com/23037/how-to-use-instruments-in-xcode
Leaks y Allocations Instruments no controla la memoria virtual que utilizan los
grficos. Usar VM Tracker Instruments para ver el uso de este tipo de memoria y
activar "Automatic Snapshotting" o apretar el botn de "Snapshot Now".
Exception Codes
Hay algunos cdigos que pueden encontrarse con frecuencia y con los cuales puede
deducirse el motivo del crash:
0x8badf00d: "ate bad food". Indica que la aplicacin fue finalizada porque
ocurri un "watchdog timeout", es decir que la aplicacin tard demasiado en
iniciar, terminar o responder a eventos del sistema.
0xbad22222: indica que una aplicacin VoIP fue terminada porque reiniciaba
muchas veces.
0xdead10cc: "dead loco". Indica que la aplicacin fue terminada porque se ubic
en un recurso del sistema mientras se ejecutaba en segundo plano.
0xdeadfa11: "dead fall". Indica sue la aplicacin fue forzada a terminar por el
usuario. Para Apple esto ocurre probablemente cuando la aplicacin no
responde.
SIGABRT: sucede cuando se llama a un mtodo que no existe en un objeto, por
ejemplo cuando se llama indirectamente mediante un selector.