una traducir simbólico simbolos simbolizacion simbolico proposición proposiciones los logicos logicas logica lenguaje formalizar ejemplos cómo convertir conectores como ios xcode

ios - traducir - Cómo simbolizar el registro de bloqueo Xcode?



simbolos de proposiciones (8)

El organizador de Xcode 5 tenía una vista que enumeraría todos los registros de fallos. y podríamos arrastrar registros de bloqueo de caída aquí. Pero desde Xcode 6, sé que han movido los dispositivos de la organización y tienen una nueva ventana para el mismo. Pero no encuentro un lugar donde vea los registros de fallos que arrastro y elimino en Xcode 5 después de subir a Xcode 6. ¿Alguien sabe la respuesta?


Asegúrese de que el nombre de su aplicación Xcode no contenga ningún espacio. Esta fue la razón por la que no funcionó para mí. Entonces /Applications/Xcode 6.1.1.app /Applications/Xcode.app funciona, mientras que /Applications/Xcode 6.1.1.app no funciona.


De los documentos de Apple:

Simbolizar informes de fallas con Xcode Xcode intentará simbolizar automáticamente todos los informes de fallas que encuentre. Todo lo que necesita hacer para la simbolización es agregar el informe de fallos al Xcode Organizer.

  • Conecte un dispositivo iOS a su Mac
  • Elija "Dispositivos" en el menú "Ventana"
  • En la sección "DISPOSITIVOS" en la columna de la izquierda, elige un dispositivo
  • Haga clic en el botón "Ver registros del dispositivo" en la sección "Información del dispositivo" en el panel derecho
  • Arrastre su informe de fallos a la columna izquierda del panel presentado
  • Xcode simbolizará automáticamente el informe de fallas y mostrará los resultados Para simbolizar un informe de fallas, Xcode necesita poder localizar lo siguiente:

    1. El archivo binario y dSYM de la aplicación que falla.

    2. 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 que fueron construidos por un tercero, tendrá que pedirle al autor el archivo dSYM.

    3. Símbolos para el sistema operativo en el que se ejecutaba esa aplicación cuando se bloqueaba. Estos símbolos contienen información de depuración para los marcos incluidos en una versión específica del sistema operativo (p. Ej., IOS 9.3.3). Los símbolos de SO son específicos de la arquitectura; una versión de iOS para dispositivos de 64 bits no incluirá los símbolos de armv7. Xcode copiará automáticamente los símbolos del sistema operativo de cada dispositivo que conecte a su Mac.

Si falta alguno de estos, es posible que Xcode no pueda simbolizar el informe de fallas, o que solo simbolice parcialmente el informe de fallas.


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:

  1. Cree una carpeta separada, copie Foo.app y Foo.app.dSYM del Foo.app.dSYM .xcarchive correspondiente en la carpeta. Copie también el informe .crash en la carpeta.

  2. Abra el informe de bloqueo en TextEdit o en otro lugar, vaya a la sección Binary Images: y copie allí la primera dirección (p. Ej., 0xd7000 ).

  3. 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 opción -arch (puede obtenerse de la primera línea en la sección Binary Images: , o descifrarse del Hardware Model: en el informe de fallos y en los archivos admitidos 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 la opción y seleccione el bloque de texto necesario, o copie y corte) para obtener algo como esto:

0x000f12fb 0x002726b7 0x0026d415 0x001f933b 0x001f86d3

Ahora puede guardar esto en un archivo de texto, por ejemplo, addr.txt , y ejecutar el siguiente comando:

xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 -f addr.txt

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 que atos informará alegremente algo para básicamente cualquier dirección suministrada).

Para realizar la comprobación, abra el informe de fallos y vaya al final de la pila de llamadas para el Thread 0 . La primera línea del final para mostrar su aplicación (generalmente la segunda), por ejemplo:

34 Foo 0x0033f9bb 0xd7000 + 2525627

debería ser la llamada main() . 0x0033f9bb la dirección ( 0x0033f9bb en este caso) como se describe arriba debería confirmar que esto es de hecho main() y no algún método o función aleatoria.

Si la dirección no es la de main() , verifique su dirección de carga ( -l opción) y arch (opción de -arch ).

PPS

Si lo anterior no funciona debido a un código de bits , descargue dSYM para su compilación desde iTunes Connect, extraiga el binario ejecutable de dSYM (Finder> Show Package Contents), cópielo en el directorio y úselo (es decir, Foo ) como el argumento para atos , en lugar de Foo.app/Foo .


Hay una manera más fácil de usar Xcode (sin usar herramientas de línea de comandos y buscando direcciones una a la vez)

  1. Tome cualquier archivo .xcarchive. Si tiene uno de antes, puede usarlo. Si no tiene uno, cree uno ejecutando el Producto> Archivo desde Xcode.

  2. Haga clic derecho en el archivo .xcarchive y seleccione ''Mostrar contenido del paquete''

  3. Copie el archivo dsym (de la versión de la aplicación que se colgó) a la carpeta dSYMs

  4. Copie el archivo .app (de la versión de la aplicación que se colgó) a la carpeta Products> Applications

  5. Edite Info.plist y edite CFBundleShortVersionString y CFBundleVersion en el diccionario ApplicationProperties. Esto te ayudará a identificar el archivo más tarde

  6. Haga doble clic en .xcarchive para importarlo a Xcode. Debería abrir Organizer.

  7. Regrese al registro de bloqueo (en la ventana Dispositivos en Xcode)

  8. Arrastre su archivo .crash allí (si no está presente)

  9. Todo el registro de bloqueo debe ser simbolizado. De lo contrario, haga clic con el botón derecho y seleccione ''Volver a simbolizar registro de bloqueo''


Ok, me di cuenta de que puedes hacer esto:

  1. En Xcode > Window > Devices , seleccione un iPhone / iPad / etc conectado arriba a la izquierda.
  2. Ver registros de dispositivos
  3. Todos los registros

Es probable que tengas muchos registros allí, y para que sea más fácil encontrar el registro importado más adelante, puedes continuar y eliminar todos los registros en este punto ... a menos que signifiquen dinero para ti. O a menos que sepa el momento exacto en que ocurrió el bloqueo, debe escribirse en el archivo de todos modos ... Soy flojo, así que elimino todos los registros antiguos (esto en realidad me llevó un tiempo).

  1. Simplemente arrastre y suelte su archivo en esa lista. Funcionó para mí

Para mí, el archivo .crash fue suficiente. Sin archivo .dSYM y archivo .app.

Ejecuté estos dos comandos en el mac donde construí el archivo y funcionó:

export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer" /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash /yourPath/crash1.crash > /yourPath/crash1_symbolicated.crash


Si tiene .dSYM y el archivo .crash en la misma subcarpeta, estos son los pasos que puede seguir:

  1. Al observar la traza inversa en el archivo .crash, tenga en cuenta el nombre de la imagen binaria en la segunda columna y la dirección en la tercera columna (por ejemplo, 0x00000001000effdc en el ejemplo a continuación).
  2. Justo debajo del backtrace, en la sección "Imágenes binarias", anote el nombre de la imagen, la arquitectura (por ejemplo, arm64) y la dirección de carga (0x1000e4000 en el ejemplo siguiente) de la imagen binaria (por ejemplo, TheElements).
  3. Ejecuta lo siguiente:

$ atos -arch arm64 -o TheElements.app.dSYM/Contents/Resources/DWARF/TheElements -l 0x1000e4000 0x00000001000effdc -[AtomicElementViewController myTransitionDidStop:finished:context:]

Fuente https://developer.apple.com/library/content/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-SYMBOLICATE_WITH_ATOS : https://developer.apple.com/library/content/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-SYMBOLICATE_WITH_ATOS


También puede referirse a este, he escrito el procedimiento paso a paso de la Re-Simbolización Manual Crash.

Crash Re-Simbolización

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 quiera que vaya usando Terminal fácilmente.

Para mí, Desktop es el lugar más fácilmente accesible;) Por lo tanto, he movido estos tres archivos a una carpeta MyApp at Desktop.

PASO 2

Ahora es su turno de Finder, vaya a la ruta de seguir lo que sea aplicable para su versión de XCODE.

Xcode 8, Xcode 9 / /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash / /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 / /Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources

Más Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources 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

Copie el archivo symbolicatecrash desde esta ubicación y péguelo en Desktop / MyApp (Espere ... No me sigan ciegamente, estoy pegando el archivo sybolicatecrash en la carpeta MyApp, uno que creó en el paso uno en su ubicación favorita, con tres archivos. )

PASO 3

Abra Terminal y CD en la carpeta MyApp.

cd Desktop/MyApp — Press Enter export DEVELOPER_DIR=$(xcode-select --print-path)

- Presione Entrar

./symbolicatecrash -v MyApp-Crash-log.crash MyApp.dSYM

- Presione Entrar

Eso es !! Los registros simbolizados están en su terminal ... ¿ahora qué está esperando? Ahora simplemente, descubre el error y resuélvelo;)

Happy Coding !!!