Respuestas:
Los archivos dSYM almacenan los símbolos de depuración de su aplicación
Servicios como crashlytics lo utilizan para reemplazar los símbolos en los registros de fallos con los nombres de métodos apropiados para que sea legible y tenga sentido.
El beneficio de usar dSYM es que no necesita enviar su aplicación con sus símbolos, lo que dificulta la ingeniería inversa y también reduce el tamaño binario.
Para utilizarlo para simbolizar el registro de fallos, debe arrastrar el registro de fallos a los registros del dispositivo del dispositivo en el organizador de la máquina que compiló el binario de la aplicación (una máquina que almacena el dSYM)
Si tiene el dSYM pero no tiene la máquina, el binario de la aplicación compilado, siga las instrucciones en este enlace para instalar el dSYM en la máquina
Para obtener más información, consulte la nota técnica de Apple TN2151
dSYM
son las siglas de Xcode Debugging Symbols, es una especie de archivo de mapeo que puede, por ejemplo, decodificar un seguimiento de pila en un formato legible. Es una Bundle
con la siguiente estructura:
Por ejemplo, un registro de fallos se ve así:
//before
0 libswiftCore.dylib 0x000000018f3c9380 0x18f394000 + 217984
1 libswiftCore.dylib 0x000000018f3c9380 0x18f394000 + 217984
2 libswiftCore.dylib 0x000000018f3c8844 0x18f394000 + 215108
3 libswiftCore.dylib 0x000000018f3a74e0 0x18f394000 + 79072
4 libswiftCore.dylib 0x000000018f3ab0d8 0x18f394000 + 94424
5 F49088168M 0x00000001045ac750 0x104590000 + 116560
6 F49088168M 0x00000001045b7904 0x104590000 + 162052
7 F49088168M 0x00000001045b897c 0x104590000 + 166268
8 F49088168M 0x000000010459d914 0x104590000 + 55572
9 F49088168M 0x00000001045a0e70 0x104590000 + 69232
10 F49088168M 0x00000001045a0f4c 0x104590000 + 69452
dSYM
en acción
//after Symbolicating(dSYM is used)
0 libswiftCore.dylib 0x000000018f3c9380 closure #1 in closure #1 in closure #1 in _assertionFailure+ 217984 (_:_:file:line:flags:) + 452
1 libswiftCore.dylib 0x000000018f3c9380 closure #1 in closure #1 in closure #1 in _assertionFailure+ 217984 (_:_:file:line:flags:) + 452
2 libswiftCore.dylib 0x000000018f3c8844 _assertionFailure+ 215108 (_:_:file:line:flags:) + 468
3 libswiftCore.dylib 0x000000018f3a74e0 _ArrayBuffer._checkInoutAndNativeTypeCheckedBounds+ 79072 (_:wasNativeTypeChecked:) + 208
4 libswiftCore.dylib 0x000000018f3ab0d8 Array.subscript.getter + 84
5 F49088168M 0x00000001045ac750 static ELM327ResponseManager.getResponse(responseStr:obd2Protocol:) + 116560 (ELM327ResponseManager.swift:27)
6 F49088168M 0x00000001045b7904 ELM327Client.dataInput(_:characteristicUuidStr:) + 162052 (ELM327Client.swift:56)
7 F49088168M 0x00000001045b897c protocol witness for BLEClientInputPort.dataInput(_:characteristicUuidStr:) in conformance ELM327Client + 166268 (<compiler-generated>:0)
8 F49088168M 0x000000010459d914 BLEConnection.peripheralDataReceived(data:characteristicUuidStr:) + 55572 (BLEConnection.swift:124)
9 F49088168M 0x00000001045a0e70 BLEConnection.peripheral(_:didUpdateValueFor:error:) + 69232 (BLEConnection.swift:293)
10 F49088168M 0x00000001045a0f4c @objc BLEConnection.peripheral(_:didUpdateValueFor:error:) + 69452 (<compiler-generated>:0)
De forma predeterminada, dSYM
se genera de forma predeterminada para una versión de lanzamiento . Usted puede comprobarlo:
Build Settings -> Generate Debug Symbols -> Yes
Build Settings -> Debug Information Format -> DWARF with dSYM File
La ubicación de los resultados que puede encontrar en la Products
carpeta
Para generar un dSYM
archivo manualmente .app
usandodsymutil
dsymutil F49088168M.app/F49088168M -o F49088168M.app.dSYM
Para simbolizar un accidente usando symbolicatecrash
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/Current/Resources/symbolicatecrash "<path>/F49088168M-2020-06-04-212904.crash" "<path>/F49088168M.app.dSYM" > symbolicated.crash
Para abrir dSYM
manualmente usandodwarfdump
dwarfdump --arch arm64 --debug-pubtypes F49088168M.app.dSYM
el resultado se parece a:
0x00000065 "PeripheralLogView"
0x000005cc "BLEConnection"
0x000005da "BLEPeripheral"
0x000005e9 "ELM327Client"