Yanıtlar:
dSYM dosyaları, uygulamanız için hata ayıklama sembollerini depolar
Crashlytics gibi hizmetler, kilitlenme günlüklerindeki sembolleri uygun yöntem adlarıyla değiştirmek için kullanır, böylece okunabilir ve mantıklı olacaktır.
DSYM'yi kullanmanın yararı, Uygulamanızı sembollerle birlikte göndermenize gerek kalmamasıdır, bu da onu tersine mühendislik yapmayı zorlaştırır ve ayrıca ikili boyutunuzu azaltır.
Çökme günlüğünü sembolize etmek için kullanmak için, çökme günlüğünü, uygulamanın ikili dosyasını derleyen makinenin düzenleyicisindeki aygıtın aygıt günlüklerine (dSYM'yi depolayan bir makine) sürüklemeniz gerekir.
DSYM'ye sahipseniz ancak makineye sahip değilseniz, uygulama ikili dosyasını derlediyseniz, dSYM'yi makineye kurmak için bu bağlantıdaki talimatları izleyin.
Daha fazla bilgi için lütfen apple teknik notu TN2151'e bakın
dSYM
Xcode Hata Ayıklama Sembolleri anlamına gelir, örneğin bir yığın izinin kodunu okunabilir bir biçime çözebilen bir tür eşleme dosyasıdır. Bir Bundle
sonraki yapıya sahip bir:
Örneğin bir kilitlenme günlüğü şuna benzer:
//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
eylemde
//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)
Varsayılan olarak dSYM
, bir yayın sürümü için varsayılan olarak oluşturulur . Kontrol edebilirsin:
Build Settings -> Generate Debug Symbols -> Yes
Build Settings -> Debug Information Format -> DWARF with dSYM File
Products
Klasörde bulabileceğiniz sonuç konumu
Kullanarak dSYM
manuel olarak dosya oluşturmak .app
içindsymutil
dsymutil F49088168M.app/F49088168M -o F49088168M.app.dSYM
Çökmeyi sembolize etmek için 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
dSYM
Kullanarak manuel olarak açmak içindwarfdump
dwarfdump --arch arm64 --debug-pubtypes F49088168M.app.dSYM
sonuç şuna benzer:
0x00000065 "PeripheralLogView"
0x000005cc "BLEConnection"
0x000005da "BLEPeripheral"
0x000005e9 "ELM327Client"