जवाबों:
dSYM फ़ाइलें आपके ऐप के लिए डिबग प्रतीकों को संग्रहीत करती हैं
क्रैशलीटिक्स जैसी सेवाएं दुर्घटना लॉग में प्रतीकों को बदलने के लिए उपयुक्त तरीकों के नामों के साथ इसका उपयोग करती हैं, इसलिए यह पठनीय होगा और समझ में आएगा।
DSYM का उपयोग करने का लाभ यह है कि आपको अपने ऐप को शिप करने की आवश्यकता नहीं है क्योंकि इसके प्रतीकों को उल्टा करना कठिन हो जाता है ताकि इसे इंजीनियर उल्टा कर सके और अपने बाइनरी साइज़ को भी कम कर सके
क्रैश लॉग का प्रतीक करने के लिए उपयोग करने के लिए आपको ऐप के बाइनरी संकलित मशीन के आयोजक में डिवाइस के डिवाइस लॉग में क्रैश लॉग को खींचने की जरूरत है (एक मशीन जो dSYM को संग्रहीत करती है)
यदि आपके पास dSYM है, लेकिन मशीन में एप बाइनरी संकलित नहीं है, तो मशीन में dSYM इंस्टॉल करने के लिए इस लिंक में दिए गए निर्देशों का पालन करें।
अधिक जानकारी के लिए कृपया सेब तकनीकी नोट TN2151 देखें
dSYM
Xcode डिबगिंग सिंबल के लिए खड़ा है, यह एक प्रकार की मैपिंग फ़ाइल है, जो उदाहरण के लिए, स्टैक-ट्रेस को पठनीय प्रारूप में डिकोड कर सकती है। यह Bundle
अगली संरचना के साथ है:
उदाहरण के लिए क्रैश लॉग दिखता है:
//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
कार्रवाई में
//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)
डिफ़ॉल्ट रूप dSYM
से रिलीज़ संस्करण के लिए डिफ़ॉल्ट रूप से उत्पन्न होता है । तुम उसे देख सकते हो:
Build Settings -> Generate Debug Symbols -> Yes
Build Settings -> Debug Information Format -> DWARF with dSYM File
परिणाम स्थान आप पा सकते हैं Products
फ़ोल्डर
dSYM
फ़ाइल को मैन्युअल रूप से .app
उपयोग करने से उत्पन्न करने के लिएdsymutil
dsymutil F49088168M.app/F49088168M -o F49088168M.app.dSYM
का उपयोग कर दुर्घटना का प्रतीक है 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
मैन्युअल रूप से उपयोग करने के लिए खोलने के लिएdwarfdump
dwarfdump --arch arm64 --debug-pubtypes F49088168M.app.dSYM
परिणाम ऐसा दिखता है:
0x00000065 "PeripheralLogView"
0x000005cc "BLEConnection"
0x000005da "BLEPeripheral"
0x000005e9 "ELM327Client"