Jawaban:
File dSYM menyimpan simbol debug untuk aplikasi Anda
Layanan seperti crashlytics menggunakannya untuk mengganti simbol di log kerusakan dengan nama metode yang sesuai sehingga dapat dibaca dan masuk akal.
Manfaat menggunakan dSYM adalah Anda tidak perlu mengirimkan aplikasi Anda dengan simbolnya sehingga lebih sulit untuk merekayasa baliknya dan juga mengurangi ukuran biner Anda
Untuk digunakan sebagai simbol log kerusakan, Anda perlu menyeret log kerusakan ke log perangkat perangkat di penyelenggara mesin yang mengompilasi aplikasi biner (mesin yang menyimpan dSYM)
Jika Anda memiliki dSYM tetapi tidak memiliki mesin yang dikompilasi, biner aplikasi ikuti petunjuk di tautan ini untuk menginstal dSYM ke dalam mesin
Untuk informasi lebih lanjut silakan lihat catatan teknis apel TN2151
dSYM
singkatan dari Xcode Debugging Symbols, ini adalah sejenis file pemetaan yang dapat, misalnya, mendekode pelacakan tumpukan ke dalam format yang dapat dibaca. Ini adalah Bundle
dengan struktur berikut:
Misalnya, log kerusakan terlihat seperti:
//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
sedang beraksi
//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)
Secara default dSYM
dibuat secara default untuk versi rilis . Anda dapat memeriksanya:
Build Settings -> Generate Debug Symbols -> Yes
Build Settings -> Debug Information Format -> DWARF with dSYM File
Lokasi hasil dapat Anda temukan di Products
folder
Untuk menghasilkan dSYM
file secara manual dari .app
menggunakandsymutil
dsymutil F49088168M.app/F49088168M -o F49088168M.app.dSYM
Untuk melambangkan crash menggunakan 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
Untuk membuka dSYM
secara manual menggunakandwarfdump
dwarfdump --arch arm64 --debug-pubtypes F49088168M.app.dSYM
hasilnya terlihat seperti:
0x00000065 "PeripheralLogView"
0x000005cc "BLEConnection"
0x000005da "BLEPeripheral"
0x000005e9 "ELM327Client"