El organizador de Xcode 5 tenía una vista que enumeraría todos los registros de bloqueo. y podríamos arrastrar los registros de caída de caída aquí. Pero desde Xcode 6, sé que han movido los dispositivos fuera de la organización y tienen una nueva ventana para lo mismo. Pero no encuentro un lugar donde vea los registros de bloqueo que arrastre y suelte en Xcode 5 después de subir a Xcode 6. ¿Alguien sabe la respuesta?
190
Respuestas:
Ok, me di cuenta de que puedes hacer esto:
Xcode > Window > Devices
, seleccione un iPhone / iPad / etc conectado arriba a la izquierda.Probablemente tenga muchos registros allí, y para que le resulte más fácil encontrar su registro importado más adelante, puede continuar y eliminar todos los registros en este punto ... a menos que signifiquen dinero para usted. O, a menos que sepa el momento exacto en que ocurrió el bloqueo, de todos modos debería estar escrito en el archivo ... Soy perezoso, así que simplemente elimino todos los registros antiguos (esto realmente tomó un tiempo).
fuente
.crash
.Escribir esta respuesta tanto para la comunidad como para mí.
Si alguna vez hay problemas que simbolizan un informe de bloqueo, uno puede superarlos de la siguiente manera:
Cree una carpeta separada, copie
Foo.app
yFoo.app.dSYM
desde la correspondiente.xcarchive
en la carpeta. Copie también el.crash
informe en la carpeta.Abra el informe de bloqueo en TextEdit o en otro lugar, vaya a la
Binary Images:
sección y copie la primera dirección allí (por ejemplo0xd7000
).cd
en la carpeta Ahora puede ejecutar el siguiente comando:xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 0x0033f9bb
Esto simbolizará el símbolo en la dirección
0x0033f9bb
. Asegúrese de elegir el valor correcto para la-arch
opción (puede obtenerse de la primera línea de laBinary Images:
sección o deducirse delHardware Model:
informe de bloqueo y de los archivos soportados de la aplicación).También puede copiar las direcciones necesarias (por ejemplo, una pila de llamadas de subprocesos) desde el informe de bloqueo directamente en un archivo de texto (en TextEdit, mantenga presionada Opción y seleccione el bloque de texto necesario, o copie y corte), para obtener algo como esto:
Ahora puede guardar esto en un archivo de texto, por ejemplo
addr.txt
, y ejecutar el siguiente comando:Esto dará una buena simbolización para todas las direcciones a la vez.
PD
Antes de hacer lo anterior, vale la pena verificar que todo esté configurado correctamente (ya
atos
que felizmente informará algo para básicamente cualquier dirección suministrada).Para hacer la comprobación, abra el informe de bloqueo y vaya al final de la pila de llamadas para
Thread 0
. La primera línea desde el final para enumerar su aplicación (generalmente la segunda), por ejemplo:Debería ser la
main()
llamada. Simbolizar la dirección (0x0033f9bb
en este caso) como se describió anteriormente debería confirmar que esto es realmentemain()
y no algún método o función aleatorio.Si la dirección no es la de
main()
, verifique su dirección de carga (-l
opción) y arch (-arch
opción).PPS
Si lo anterior no funciona debido al código de bits , descargue el dSYM para su compilación de iTunes Connect, extraiga el binario ejecutable del dSYM (Finder> Mostrar contenido del paquete), cópielo en el directorio y úselo (es decir
Foo
) como argumento paraatos
, en lugar de laFoo.app/Foo
.fuente
xcrun dwarfdump --uuid <path to executable>
./symbolicate.sh mycrash.crash MyApp.app arch64 output.crash
solo simbolizará el informe de bloqueo completo y le dará la versión simbolizada del mismo. gist.github.com/nathan-fiscaletti/…También puede referirse a este, he escrito paso a paso el procedimiento de re-simbolización de bloqueo manual.
Re-simbolización de bloqueo
PASO 1
Mueva todos los archivos anteriores (MyApp.app, MyApp-dSYM.dSYM y MyApp-Crash-log.crash) a una Carpeta con un nombre conveniente donde sea que pueda ir usando Terminal fácilmente.
Para mí, Desktop es el lugar más accesible;) Por lo tanto, he movido estos tres archivos a una carpeta MyApp en Desktop.
PASO 2
Ahora es su turno de Finder, vaya a la ruta de seguir lo que sea aplicable para su versión XCODE.
Use este comando para encontrar el
symbolicatecrash
archivo de script,find /Applications/Xcode.app -name symbolicatecrash
Xcode 8, Xcode 9, Xcode 11
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
Xcode 7.3
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
XCode 7
/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
Xcode 6
/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources
Inferior a Xcode 6
Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources
O
Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources
PASO 3
Agregue el directorio del archivo de script symbolicatecrash encontrado a una
$PATH
variable de entorno como esta:sudo vim /etc/paths.d/Xcode-symbolicatecrash
y pegue el directorio del archivo de script y guarde el archivo. Al abrir una nueva terminal, puede llamarsymbolicatecrash
a cualquier carpeta como comandos ubicados en/usr/bin
.O
Copie el archivo Symbolicatecrash de esta ubicación y péguelo en el Escritorio / MyApp (Espere ... No me siga ciegamente, estoy pegando el archivo Sybolicatecrash en la carpeta MyApp, uno que creó en el paso uno en su ubicación favorita, que tiene tres archivos. )
PASO 4
Abra Terminal y CD en la carpeta MyApp.
- Presione Entrar
- Presione Entrar
Eso es !! Los registros simbolizados están en su terminal ... ¿ahora qué está esperando? Ahora simplemente, descubra el error y resuélvalo;)
Feliz codificación !!!
fuente
xcode-select --print-path
Para mí, el archivo .crash fue suficiente. Sin archivo .dSYM y archivo .app.
Ejecuté estos dos comandos en la Mac donde construí el archivo y funcionó:
fuente
Hay una manera más fácil de usar Xcode (sin usar herramientas de línea de comandos y buscar direcciones de una en una)
Tome cualquier archivo .xcarchive. Si tiene uno de antes, puede usarlo. Si no tiene uno, cree uno ejecutando Producto> Archivar desde Xcode.
Haga clic derecho en el archivo .xcarchive y seleccione 'Mostrar contenido del paquete'
Copie el archivo dsym (de la versión de la aplicación que se bloqueó) a la carpeta dSYMs
Copie el archivo .app (de la versión de la aplicación que se bloqueó) a la carpeta Productos> Aplicaciones
Edite Info.plist y edite CFBundleShortVersionString y CFBundleVersion en el diccionario ApplicationProperties. Esto te ayudará a identificar el archivo más tarde
Haga doble clic en el archivo .xcarchive para importarlo a Xcode. Debería abrir Organizador.
Regrese al registro de fallas (en la ventana Dispositivos en Xcode)
Arrastre su archivo .crash allí (si aún no está presente)
Todo el registro de bloqueo ahora debe estar simbolizado. De lo contrario, haga clic derecho y seleccione 'Volver a simbolizar el registro de fallas'
fuente
Siga estos pasos en Xcode 10 para simbolizar un registro de bloqueo de una compilación de aplicación en la misma máquina:
fuente
Si tiene el .dSYM y el archivo .crash en la misma subcarpeta, estos son los pasos que puede seguir:
$ atos -arch arm64 -o TheElements.app.dSYM/Contents/Resources/DWARF/TheElements -l 0x1000e4000 0x00000001000effdc -[AtomicElementViewController myTransitionDidStop:finished:context:]
Fuente autorizada : https://developer.apple.com/library/content/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-SYMBOLICATE_WITH_ATOS
fuente
Xcode 11.2.1, diciembre de 2019
** **
** **
Podremos ver registros de bloqueo simbolizados allí
Consulte el enlace para obtener más detalles sobre los registros de bloqueo de simbolización
fuente
Asegúrese de que el nombre de su aplicación Xcode no contenga espacios. Esta fue la razón por la que no funcionó para mí. Entonces
/Applications/Xcode.app
funciona, mientras/Applications/Xcode 6.1.1.app
que no funciona.fuente
De los documentos de Apple:
Simbolizar informes de bloqueo con Xcode Xcode intentará automáticamente simbolizar todos los informes de bloqueo que encuentre. Todo lo que necesita hacer para la simbolización es agregar el informe de bloqueo al Organizador Xcode.
Xcode simbolizará automáticamente el informe de bloqueo y mostrará los resultados Para simbolizar un informe de bloqueo, Xcode debe poder localizar lo siguiente:
El archivo binario y dSYM de la aplicación que falla.
Los archivos binarios y dSYM para todos los marcos personalizados con los que se vincula la aplicación. Para los marcos que se crearon desde el origen con la aplicación, sus archivos dSYM se copian en el archivo junto con el archivo dSYM de la aplicación. Para los marcos creados por un tercero, deberá solicitar al autor el archivo dSYM.
Símbolos para el sistema operativo en el que la aplicación se estaba ejecutando cuando se bloqueó. Estos símbolos contienen información de depuración para los marcos incluidos en una versión específica del sistema operativo (por ejemplo, iOS 9.3.3). Los símbolos del sistema operativo son específicos de la arquitectura: una versión de iOS para dispositivos de 64 bits no incluirá símbolos armv7. Xcode copiará automáticamente los símbolos del sistema operativo de cada dispositivo que conecte a su Mac.
Si falta alguno de estos, Xcode puede no ser capaz de simbolizar el informe de bloqueo, o solo puede simbolizar parcialmente el informe de bloqueo.
fuente
El proceso más fácil para simbolizar registros de fallas:
Espera 5 segundos. ¡Explosión! ¡las llamadas de la aplicación en el seguimiento de la pila se simbolizarán! Sin embargo, es posible que aún veas muchos símbolos. esas son llamadas internas de la biblioteca y el marco.
¡Este es el más fácil, probado y probado!
fuente
** **
** **
Podremos ver registros de bloqueo simbolizados allí
Consulte el enlace para obtener más detalles sobre los registros de bloqueo de simbolización
fuente