¿Registros de bloqueo generados por iPhone Simulator?
ios-simulator crash-reports (6)
¿Hay algún registro de bloqueo generado por el simulador de iPhone?
el simulador se bloquea mucho pero no deja ningún rastro en la consola ... el registro de bloqueo será útil.
Aquí hay algo que funcionó para mí en un caso especial ... Mi aplicación estaba fallando con SIGKILL cuando finalizó. Vería la excepción en main.m durante unos segundos, y luego la aplicación terminaría de terminar, por lo tanto, no hay posibilidad de obtener el seguimiento.
Investigué mucho en "dónde guarda el simulador sus registros de fallos" y nunca pude encontrar una respuesta. Sin embargo, el siguiente truco fue bastante útil y pude tomar el registro de fallos sobre la marcha:
Básicamente, abra /Applications/Utilities/CrashReporterPrefs.app y cambie la configuración a "Desarrollador". Esto hará que CrashReporter muestre una ventana emergente con el registro de bloqueo después de que la aplicación se cuelgue.
Encontré esto en la sección "Visualización de la consola del simulador de iOS y los registros de bloqueo" en este documento de Apple: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/ios_development_workflow/125-Using_iOS_Simulator/ios_simulator_application.html
Esto es mucho más confiable. En solo unos pocos pasos, pude encontrar el número de línea de origen y el nombre del método:
- cd al directorio que tiene los archivos .app y .dSYM
- ejecutar /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gdb/gdb-arm-apple-darwin MyApp.app/MyApp
- establecer impresión asm-demangle en
- set print symbol-filename en
- p / a 0 × 00015c64 -> dirección obtenida abriendo el registro de bloqueo en la aplicación "Consola" o simplemente haciendo doble clic en el archivo .crash.
Estoy bastante seguro de que puede ver esto en la aplicación OS X Console ubicada en Utilidades. Sin embargo, si estoy equivocado, asegúrese de votarme al diablo, así que borro esto.
ACTUALIZAR:
Específicamente (a partir de OSX 10.11.6),
Cuando una aplicación falla en el emulador, se agrega una subcarpeta (con una identificación única) a:
~ / Library / Logs / CoreSimulator
Dentro de eso, comienza examinando stderr.log
y system.log
.
Cuando el emulador se cuelga, se agrega una subcarpeta a:
~ / Library / Logs / DiagnosticReports
No confundas este camino con
/ Biblioteca / Registros
(falta ~
al inicio), que tiene diferentes informes sobre tu mac.
Los registros de bloqueo de fallos aparecerán en ~ / Library / Logs / CrashReporter.
- Si el programa del simulador de iPhone falla (no la aplicación de iPhone que se ejecuta dentro del simulador), entonces habrá una entrada para iPhoneSimulator.
- Si la aplicación de iPhone dentro del simulador falla, el registro de bloqueo aparecerá con el nombre para mostrar de la aplicación.
Cuando Xcode obtiene registros de bloqueo de un dispositivo conectado, los almacena en subcarpetas de ~ / Library / Logs / CrashReporter / MobileDevice
Para mí, fue una expresión que agregué a la ventana del reloj del depurador. Cuando se llegaba a un punto de interrupción, la mala expresión causaba que XCode segfault.
La consola mostrará la salida NSLog()
desde una aplicación que se ejecuta en el simulador. Los registros de fallos se guardan en el archivo.
He encontrado algunos en mi directorio de inicio en
~/Library/Logs/DiagnosticReports/
Tienen una extensión de archivo de .crash
Algo que todavía no he descubierto es cómo hacer que generen incluso si el depurador toma la señal EXC_BAD_ACCESS
.
Actualizar
Actualmente, (OSX 10.11.6), los registros de .crash en ~/Library/Logs/DiagnosticReports
, se producen cuando el emulador se cuelga . Los registros de una aplicación que falla (pero el dispositivo emulador todavía funciona correctamente) están en:
~ / Library / Logs / CoreSimulator
Por accidente, hay una subcarpeta con una identificación única. Ordenar por fecha, de modo que su último bloqueo sea la primera subcarpeta. Dentro de eso, comienza por mirar stderr.log
y system.log
.
También directamente debajo de CoreSimulator
, vea CoreSimulator.log
y Simulator.log
.