ডিএসওয়াইএম কী এবং এটি কীভাবে ব্যবহার করবেন? (আইওএস এসডিকে)


117

কখনও কখনও সংকলক .dSYM ফাইল উত্পাদন করে। আমার ধারণা এটি একটি ডিবাগিং সম্পর্কিত ফাইল, তবে এটি কী এবং কীভাবে এটি ব্যবহার করব তা আমি জানি না।

.DSYM কী? আমি কিভাবে এটা ব্যবহার করব?

উত্তর:


160

ডিএসওয়াইএম ফাইলগুলি আপনার অ্যাপ্লিকেশানের জন্য ডিবাগ প্রতীকগুলি সঞ্চয় করে

ক্র্যাশলাইটিক্সের মতো পরিষেবাগুলি যথাযথ পদ্ধতির নামের সাথে ক্র্যাশ লগগুলিতে চিহ্নগুলি প্রতিস্থাপন করতে এটি ব্যবহার করে যাতে এটি পঠনযোগ্য এবং বোধগম্য হবে।

ডিএসওয়াইএম ব্যবহারের সুবিধাটি হ'ল আপনার অ্যাপ্লিকেশনটিকে এটির প্রতীক সহ প্রেরণ করার দরকার নেই এটির পরিবর্তে ইঞ্জিনিয়ারিং এবং আপনার বাইনারি আকার হ্রাস করতে

ক্র্যাশ লগের প্রতীক হিসাবে ব্যবহার করতে আপনাকে অ্যাপ্লিকেশন বাইনারি সংকলনকারী মেশিনের সংগঠকের ডিভাইসের ডিভাইস লগগুলিতে ক্র্যাশ লগটি টেনে আনতে হবে (একটি মেশিন যা ডিএসওয়াইএম সংরক্ষণ করে)

আপনার যদি ডিএসওয়াইএম থাকে তবে মেশিনটি অ্যাপ্লিকেশন বাইনারি সংকলিত না করে মেশিনে ডিএসওয়াইএম ইনস্টল করার জন্য এই লিঙ্কের নির্দেশাবলী অনুসরণ করুন

আরও তথ্যের জন্য দয়া করে অ্যাপল প্রযুক্তিগত নোট টিএন 2151 দেখুন


1
কোনও অ্যাপ স্টোর বাইনারি সহ ডিএসওয়াইএমগুলি অন্তর্ভুক্ত না করে ক্র্যাশলাইটিক্স ক্র্যাশগুলিতে লগ করতে সক্ষম করবে না?
গণক

সুতরাং 'অন্তর্ভুক্ত অ্যাপ্লিকেশন চিহ্নগুলি ...' বাক্সটি চেক করা নিরাপদ?
জেনাক

2
আপনি যদি অ্যাপল সংযোগের মধ্যে ক্রাশলোগগুলি দেখতে সক্ষম হতে চান তবে আপনি অ্যাপ স্টোরটিতে অ্যাপ্লিকেশন আপলোড করার সময় আপনি অ্যাপ্লিকেশন চিহ্নগুলিকে অন্তর্ভুক্ত করতে পারেন। আপনি যদি ক্র্যাশলিটিক্স ব্যবহার করে থাকেন তবে আপনাকে এটি করতে হবে না তবে অ্যাপ্লিকেশন চিহ্নগুলিতে (ডিএসআইএম ফাইল) অন্তর্ভুক্ত করা এবং অ্যাপ্লিকেশনটিতে আপলোডে "অন্তর্ভুক্ত অ্যাপ্লিকেশন প্রতীকগুলি ..." পরীক্ষা করে এটি অ্যাপলে প্রেরণ করা ক্ষতি করে না স্টোর উইজার্ড
টোমর এমনকি

1
আমি ভাবছিলাম যে এটি করা সম্ভব হলে ব্যবহারকারীর বেশ কয়েকটি
এমবি সংরক্ষণ করুন

- Crashlytics ডেভেলপারদের থেকে twittercommunity.com/t/...
genaks

1

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"

[শব্দভাণ্ডার]

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.