2012-08-09 22 views
15

मेरा आईओएस एप्लीकेशन दुर्घटनाग्रस्त हो गया। मैं डीएसवाईएम फ़ाइल के साथ क्रैश लॉग पढ़ना चाहता हूं। यह कैसे संभव है?आईओएस में डीएसवाईएम फ़ाइल का उपयोग कर क्रैश लॉग को डीकोड कैसे करें?

उत्तर

33

सबसे पहले, आपको तीन फाइलों की आवश्यकता है: डीएसवाईएम फ़ाइल, एप्लिकेशन फ़ाइल और क्रैश लॉग।

एक्स कोड खोलें, प्रोजेक्ट नेविगेटर में उत्पाद फ़ोल्डर, और "खोजक में दिखाएं" ऐप फ़ाइल प्रकट होता है। यहां आपको डीएसवाईएम फ़ाइल भी मिल जाएगी। उन्हें एक फ़ोल्डर में कॉपी करें।

अब टर्मिनल खोलें, और उस फ़ोल्डर पर नेविगेट करें जिसे आपने पहले दो फाइलों की प्रतिलिपि बनाई थी। चलाएं: dwarfdump --uuid Application_name.app/Application_name आपको एप्लिकेशन का यूयूआईडी प्राप्त करना चाहिए। निम्न आदेश चलाएं: dwarfdump --uuid Application_name.app.dSYM - आपको फिर से यूयूआईडी प्राप्त होगा, जिसे पहले प्राप्त यूयूआईडी से मेल खाना चाहिए।

क्रैश लॉग (एक्स कोड - ऑर्गनाइज़र - क्रैश) खोलें, और "बाइनरी छवियां" शीर्षक दिखाई देने वाली रेखा को ढूंढें। यहां पहली पंक्ति में एक और यूयूआईडी है, जिसे पहले टर्मिनल में प्राप्त होने के साथ मिलना चाहिए।

अब, आपको आश्वासन दिया जाता है कि आप जिस बिल्डिंग की जांच कर रहे हैं उसमें क्रैश लॉग किया गया था, इसलिए क्रैश लॉग फ़ाइल को फिर से खोलें, थ्रेड 0 सेक्शन ढूंढें, और आपके एप्लिकेशन नाम और दो पते के साथ दो लाइनें होनी चाहिए। जैसे:

Application_name 0x123456 
Application_name 0x987654 

टर्मिनल आप चलाना चाहिए में अब: atos -arch armv7 -o address1 address2 (पता 1 और address2 पिछले दो पते के साथ प्रतिस्थापित किया जाना चाहिए, और अपने सिस्टम के साथ ARMv7 - यह लाइनों पर दिखाया गया है, जहां मिल गया यूयूआईडीएस)।

हैप्पी डिबगिंग!

संपादित करें: मैं this मेरा आधार के रूप में पोस्ट करना चाहता हूं।

+1

रफ है वर्णित प्रक्रिया हमेशा काम नहीं करता, ASLR के कारण में कमान हालिया आईओएस संस्करण। इसके बजाय क्या करना है इस स्पष्टीकरण पर जाएं: http://stackoverflow.com/questions/13574933/ios-crash-reports-atos-not-working-as-expected/13576028#13576028 – Kerni

1

असल में, आप dSYM फ़ाइल डिकोड नहीं कर सकते हैं, लेकिन यह से त्रुटि विवरण प्राप्त 1. लॉग फ़ाइल से दुर्घटना धागा और पता मिल: निम्नलिखित 0x0nnn 2. है लॉग फ़ाइल से देशी कोड के प्रकार: निम्नलिखित arm64
3., dSYM फ़ाइल (प्रतीक फ़ाइल) को खोजने .xcarchive से निकालने है: निम्नलिखित xx.app.dSYM

dwarfdump --lookup 0x0nnn --arch=[arm64 armv6 armv7] xx.app.dSYM