Obtención y simbolización de archivos iOS_crash (análisis)


1. Utilice simbólicocrash para analizar el archivo .ips:

symbolicatecrashEs una herramienta de análisis de registros Xcodeincorporada.crash

Paso 1. Busque symbolicatecrashy abra Terminalla ejecución:

find /Applications/Xcode.app -name symbolicatecrash -type f

Después de un tiempo, se generará la ruta, luego copie la ruta, haga clic con el botón derecho en Finder -> Ir a la carpeta -> Pegar -> Entrar, la encontrará y la copiará para usarla más symbolicatecrashadelante symbolicatecrash.

Paso 2. Coloque los archivos y ./symbolicatecrashen la misma carpetacrashdSYM

Paso 3. Ejecute el comando de análisis

./symbolicatecrash 《crash文件绝对路径》 《拖入xx.app.dSYM里的xx文件》 > log.crash 回车

Se puede informar un error:

Error 1: Resolución: reintentar después Error: "DEVELOPER_DIR" is not defined at /Users/yourname/Downloads/crash/symbolicatecrash line 69.
de la ejecuciónexport DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer


Error 2: No crash report version in /xxx.crash at ./symbolicatecrash line 1365.
Motivo: Apple lo abandonó en Xcode 13.3 symbolicatecrash
Solución: Si necesita usarlo, debe .ipsconvertirlo al formato anterior. Puede utilizar AppleCrashScripts para la conversión.Pasos
:

  1. Descargue AppleCrashScriptsel proyecto e ingrese al directorio del proyecto.
  2. Copie .ipsel archivo a AppleCrashScripts-masterla carpeta:
  3. implementar:
swift convertFromJSON.swift -i xxx.ips -o log.crash

El log.crasharchivo generado es el archivo de formato antiguo, que luego ./symbolicatecrashse puede analizar.


2. Utilice CrashSymbolicator.py para analizar archivos ips

Paso 1. Encuentra CrashSymbolicator.pyel archivo,
find /Applications/Xcode.app -name CrashSymbolicator.py -type f
resultado:
/Applications/Xcode.app/Contents/SharedFrameworks/CoreSymbolicationDT.framework/Versions/A/Resources/CrashSymbolicator.py

Paso 2. Analiza el archivo usando CrashSymbolicator.pyy.dSYM.ips

python3 《CrashSymbolicator.p文件路径》 -d xxx.dSYM -p xxx.ips

Los resultados de la ejecución se mostrarán directamente en terminalél y podrá copiarlos y guardarlos si es necesario.

Paso 3. Análisis

...
"queue": "com.apple.main-thread",
"frames": [
  {
    
    
    "imageOffset": 117622764,
    "imageIndex": 0,
    "symbol": "__57-[QNBUALiveFeedCategoryChannelViewController viewDidLoad]_block_invoke",
    "sourceFile": "QNBUALiveFeedCategoryChannelViewController.m",
    "sourceLine": 80,
    "symbolLocation": 32
  },
  ...
  ]
...

Se encontró el código que estaba ejecutando el hilo principal en el momento del fallo y invokese encontró uno vacío block.


3. Utilice atos para analizar archivos bloqueados

Formato de comando:

atos -arch <BinaryArchitecture> -o <PathToDSYMFile>/Contents/Resources/DWARF/<BinaryName>  -l <LoadAddress> <AddressesToSymbolicate>

Es decir: atos [-o dSYM] -l loadAddress Address1 Address2 Address3
operación:

atos -arch arm64 -o 《拖入xxx.app.dSYM里的xxx文件》 -l 《基地址》《偏移后的地址》

Consejos: xxx es el nombre del proyecto

如1:
atos -arch arm64 -o ~/xxx.app.dSYM/Contents/Resources/DWARF/xxx 0x10b3e47ec 0x1043b8000
atos -arch arm64 -o ~/xxx.app.dSYM/Contents/Resources/DWARF/xxx 0x104885ec0 0x1043b8000

-[TTAttributedLabel encodeWithCoder:] (in xxx) (TTAttributedLabel.m:1534)
-[QNBUAPosterVerticalPaddingPicViewModel posterBackgroundOperation] (in xxx) (QNBUAPosterVerticalPaddingPicViewModel.m:115)

4. Ayuda

4.1 Adquisición de archivos .ips

  1. Dispositivo -> Configuración -> Privacidad y seguridad -> Análisis y mejora -> Analizar datos -> (correspondiente al nombre de la aplicación + punto de tiempo)
  2. El registro de fallos de TestFlight se puede obtener en iTunes Connect
    iTunes Connect -> Manage Your Applications -> 对应app -> View Detail -> Crash Reports(simbolizado)
  3. Xcode -> Ventana -> Origanizer -> Adquisición de fallos (debe iniciar sesión en la cuenta de desarrollador)
    requiere que el usuario lo comparta para obtener su registro de fallos.
    La información sobre fallos proporcionada por el funcionario no es en tiempo real y Solo puedes ver la información sobre el fallo de hace dos días. Necesitas intentar usar herramientas de terceros.

4.2 Adquisición de archivos .crash

Conecte el dispositivo a la computadora XCode -> Windows -> Dispositivo y simulador -> Ver registros del dispositivo -> (correspondiente al nombre de la aplicación + punto de tiempo) -> haga clic derecho en Exportar registro

4.3 Obtener archivos .dSYM y .app

.dSYMEs un archivo de transferencia para información de mapeo de direcciones de funciones hexadecimales. La depuración se incluirá symbolsen este archivo, symbolses decir, nombre de clase, nombre de función, etc.

  1. Al empaquetar, cada versión y archivo Archivesoficial debe guardarse para usarlos en la localización de problemas en línea.dSYMapp

Ventana -> Organizador -> Archivos -> Haga clic derecho (paquete requerido) -> Mostrar en Finder -> Haga clic derecho en .xcarchive para mostrar el contenido del paquete

Consejos: ArchivesLa ruta del archivo del paquete es:~/Library/Developer/Xcode/Archives

  1. adquisición en modo de depuración

Modifique la configuración: Xcode -> Targets -> Build Setting
2.1: Debug Infomation Format -> DWARF -> DWARF with dSYM File
2.2: Puede generar archivos Generate Debug Symbols -> YES
compilando en una máquina real.En la carpeta del proyecto, haga clic derecho -> -> y podrá encontrarlo..dSYM.appProductsxxx.app 文件Show in Finder

4.4 Utilice dwarfdump para consultar uuid

Consulta .dSYM, uuidasegúrese de que sea coherente con .ipso .crasharchivouuid

dwarfdump -u <dSYM所在文件路径>

5. Consejos

  • Consejos 1: Apple desaprobó el simbólicocrash en Xcode13.3, use atos en su lugar
  • Consejos 2: Algunos apptienen muchos dSYMarchivos y todos los archivos deben copiarse dSYMa la misma carpeta que el archivo que se va a analizar.
  • Consejos 3: el archivo simulatorno se generarácrash
  • Consejos4: XCodeConfigure el dSYMarchivo generado y ejecútelo en la máquina real. El archivo appgenerado .ipsse simbolizará automáticamente.

6. Resumen

  • CrashSymbolicator.pyLos resultados del análisis se muestran en la Terminal y no se mantiene el formato de pila original.
  • atosLa eficiencia es muy baja y debe resolverse por dirección.
  • symbolicatecrashEstá en desuso, pero el archivo aún se puede utilizar después de la conversión, analizará todo el archivo y conservará el formato de pila original (recomendado).

Descripción:
Agregar nombres de símbolos identificables a un informe de fallos
Diagnóstico de problemas mediante informes de fallos y registros de dispositivos
Adquisición de informes de fallos y registros de diagnóstico
Comprensión de fallos y registros de fallos
Análisis de un informe de fallos
Depuración de iOS Fallo mágico
de iOS 分析攻略
Formato de información de depuración


Es difícil describir este artículo sin incorporar las opiniones subjetivas del autor. Si tiene alguna pregunta sobre el contenido del artículo, puede presentar diferentes opiniones para discutir en el área de comentarios.

Supongo que te gusta

Origin blog.csdn.net/Margaret_MO/article/details/132254630
Recomendado
Clasificación