উত্তর:
ডিএসওয়াইএম ফাইলগুলি আপনার অ্যাপ্লিকেশানের জন্য ডিবাগ প্রতীকগুলি সঞ্চয় করে
ক্র্যাশলাইটিক্সের মতো পরিষেবাগুলি যথাযথ পদ্ধতির নামের সাথে ক্র্যাশ লগগুলিতে চিহ্নগুলি প্রতিস্থাপন করতে এটি ব্যবহার করে যাতে এটি পঠনযোগ্য এবং বোধগম্য হবে।
ডিএসওয়াইএম ব্যবহারের সুবিধাটি হ'ল আপনার অ্যাপ্লিকেশনটিকে এটির প্রতীক সহ প্রেরণ করার দরকার নেই এটির পরিবর্তে ইঞ্জিনিয়ারিং এবং আপনার বাইনারি আকার হ্রাস করতে
ক্র্যাশ লগের প্রতীক হিসাবে ব্যবহার করতে আপনাকে অ্যাপ্লিকেশন বাইনারি সংকলনকারী মেশিনের সংগঠকের ডিভাইসের ডিভাইস লগগুলিতে ক্র্যাশ লগটি টেনে আনতে হবে (একটি মেশিন যা ডিএসওয়াইএম সংরক্ষণ করে)
আপনার যদি ডিএসওয়াইএম থাকে তবে মেশিনটি অ্যাপ্লিকেশন বাইনারি সংকলিত না করে মেশিনে ডিএসওয়াইএম ইনস্টল করার জন্য এই লিঙ্কের নির্দেশাবলী অনুসরণ করুন
আরও তথ্যের জন্য দয়া করে অ্যাপল প্রযুক্তিগত নোট টিএন 2151 দেখুন
dSYM
এক্সকোড ডিবাগিং সিম্বলস বলতে বোঝায়, এটি এক ধরণের ম্যাপিং ফাইল যা উদাহরণস্বরূপ, স্ট্যাক-ট্রেসকে পঠনযোগ্য বিন্যাসে ডিকোড করতে পারে। এটি 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"