Respostas:
Os arquivos dSYM armazenam os símbolos de depuração para seu aplicativo
Serviços como o crashlytics usam-no para substituir os símbolos nos logs de travamento pelos nomes de métodos apropriados para que seja legível e faça sentido.
A vantagem de usar o dSYM é que você não precisa enviar seu aplicativo com os símbolos, tornando mais difícil fazer engenharia reversa e também reduzir o tamanho do binário
Para simbolizar o log de travamento, você precisa arrastar o log de travamento para os logs do dispositivo do dispositivo no organizador da máquina que compilou o binário do aplicativo (uma máquina que armazena o dSYM)
Se você tiver o dSYM, mas não tiver a máquina, o binário do aplicativo compilado siga as instruções neste link para instalar o dSYM na máquina
Para obter mais informações, consulte a nota técnica da apple TN2151
dSYM
significa Xcode Debugging Symbols, é um tipo de arquivo de mapeamento que pode, por exemplo, decodificar um rastreamento de pilha em um formato legível. É um Bundle
com a próxima estrutura:
Por exemplo, um registro de travamento se parece com:
//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
em ação
//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)
Por padrão, dSYM
é gerado por padrão para uma versão de lançamento . Você pode verificá-lo:
Build Settings -> Generate Debug Symbols -> Yes
Build Settings -> Debug Information Format -> DWARF with dSYM File
A localização do resultado você pode encontrar na Products
pasta
Para gerar o dSYM
arquivo manualmente .app
usandodsymutil
dsymutil F49088168M.app/F49088168M -o F49088168M.app.dSYM
Para simbolizar o acidente 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
resultado semelhante a:
0x00000065 "PeripheralLogView"
0x000005cc "BLEConnection"
0x000005da "BLEPeripheral"
0x000005e9 "ELM327Client"