दिलचस्प पोस्ट
सीएसएस HTML पृष्ठ पाद लेख बनाने के लिए न्यूनतम ऊंचाई के साथ पृष्ठ के नीचे रहती है क्या ग़लतमंजूर संसाधन संसाधन का मतलब है और इसे कैसे ठीक करें? Aspx / ascx फ़ाइलों के लिए .designer फ़ाइलों को पुन: उत्पन्न करने के लिए आप Visual Studio को कैसे लागू करते हैं? IE8 और IE9 में ड्रॉप डाउन ऐरो कैसे छिपाएंगे? वैकल्पिक के लिए उपयोग एंड्रॉइड स्टूडियो 0.8.1 – फेसबुक एसडीके का उपयोग कैसे करें? त्रुटि: संसाधन कॉन्फ़िगरेशन में त्रुटि एक सरणी को रखने के लिए अपेक्षित प्रतिक्रिया है लेकिन एक ऑब्जेक्ट मिला है? Mysql रिकर्सिव का चयन करें सभी स्तर के साथ सभी बच्चे प्राप्त करें सी # में घटनाओं और ईवेंट हैंडलर्स को समझना Android पर लंबी नल पर संदर्भ मेनू को अक्षम करना आप वैरिएबल के नाम को कैसे प्राप्त कर सकते हैं क्योंकि यह घोषित करने में शारीरिक रूप से लिखा गया था? डिक् तत्वों को कैसे जमा करें बाकी बनाम JSON-RPC? निर्धारित करना कि कोई एंड्रॉइड डिवाइस प्रोग्रामेटिक रूप से निहित है या नहीं? मेमोरी-कुशल तरीके से डेटा.फ्रेम बढ़ाना

आईफोन ऐप क्रैश रिपोर्ट को प्रतीक बनाते हुए

मैं अपने iPhone ऐप की क्रैश रिपोर्टों का प्रयास और प्रतीकात्मकता देख रहा हूं।

मैंने iTunes Connect से क्रैश रिपोर्ट प्राप्त किए। मेरे पास एप्लिकेशन बाइनरी है जिसे मैंने एप स्टोर में सबमिट किया था और मेरे पास डीएसवाईएम फाइल है जो निर्माण के हिस्से के रूप में उत्पन्न हुई थी।

मेरे पास इन सभी फाइल को एक ही डायरेक्टरी के अंदर एक साथ है जो स्पॉटलाइट द्वारा अनुक्रमित है I

अब क्या?

मैंने इनका उपयोग करने की कोशिश की है:

symbolicatecrash crashreport.crash myApp.app.dSYM 

और यह केवल एक ही पाठ का उत्पादन करता है जो कि क्रैश रिपोर्ट में है जो कि शुरू होने के साथ ही चिन्हित नहीं है।

क्या मुझसे कुछ गलत हो रही है?

वेब के समाधान से एकत्रित समाधान "आईफोन ऐप क्रैश रिपोर्ट को प्रतीक बनाते हुए"

सेब से क्रैश रिपोर्ट का विश्लेषण करने के लिए कदम:

  1. रिलीज .app फ़ाइल की प्रतिलिपि बनाएँ जिसे ऐपस्टोर पर धकेल दिया गया था। डीएसआईएम फ़ाइल जो रिहाई के समय बनाई गई थी और क्रैश रिपोर्ट को एपली से एक फ़ोल्डर में प्राप्त हुई

  2. टर्मिनल एप्लिकेशन खोलें और ऊपर बनाए गए फ़ोल्डर पर जाएं ( cd कमांड का उपयोग करके)

  3. atos -arch armv7 -o APPNAME.app/APPNAME MEMORY_LOCATION_OF_CRASH । स्मृति स्थान उस पर होना चाहिए जिस पर रिपोर्ट के मुताबिक ऐप क्रैश हो।

पूर्व: atos -arch armv7 -o 'APPNAME.app'/'APPNAME' 0x0003b508

यह आपको सटीक रेखा दिखाएगा, विधि का नाम जिसके कारण क्रैश हुआ।

पूर्व: [classname functionName:]; -510 [classname functionName:]; -510

प्रतीकात्मक आईपीए

अगर हम प्रतीकात्मकता के लिए आईपीए का उपयोग करते हैं – बस। ज़िप के साथ ext। नाम का नाम बदलें, इसे निकालें तो हम एक पेलोड फ़ोल्डर प्राप्त कर सकते हैं जिसमें ऐप शामिल है I इस मामले में हमें। Dsym फ़ाइल की आवश्यकता नहीं है।

ध्यान दें

यह केवल तभी काम कर सकता है यदि ऐप बाइनरी में छद्म छीन नहीं है। डिफ़ॉल्ट रिलीज के द्वारा प्रतीकों को छीन लिया जाता है हम इसे प्रोजेक्ट बिल्ड सेटिंग "प्रतिलिपि के दौरान स्ट्रिप डीबग प्रतीक" में बदल सकते हैं।

अधिक जानकारी इस पोस्ट को देखें

क्रैश लॉग (और अंत में सफल होने के लिए) के इन सभी उत्तरों को पढ़ने के बाद, मुझे लगता है कि यहां कुछ ऐसे गुम हैं जो वास्तव में महत्वपूर्ण हैं क्योंकि यह निर्धारित करने के लिए कि प्रतीक का अभिवादन किसी प्रतीक आउटपुट का उत्पादन क्यों नहीं करता है।

क्रैश लॉग का संकेत करते समय एक साथ फिट होने वाली 3 संपत्तियां हैं:

  1. क्रैश लॉग फ़ाइल में ही (यानी example.crash ), एक्सकोड के आयोजक से निर्यात किया गया या iTunes Connect से प्राप्त किया गया।
  2. .app पैकेज (यानी example.app ) जो कि क्रैश लॉग से संबंधित ऐप बाइनरी है। यदि आपके पास एक। .ipa पैकेज (यानी example.ipa ) है तो आप। .ipa पैकेज को .ipa करने से .app पैकेज निकाल सकते हैं (अर्थात example.ipa .ipa )। बाद में .app पैकेज निकाले गए Payload/ फ़ोल्डर में रहता है
  3. .dSYM पैकेज में डीबग प्रतीकों वाले ( example.app.dSYM )

प्रतीकों को शुरू करने से पहले आपको जांचना चाहिए कि उन सभी कलाकृतियों से मेल खाता है, जिसका मतलब है कि दुर्घटना लॉग आपके पास बाइनरी है और वह डिबग प्रतीक उस बाइनरी के निर्माण के दौरान उत्पादित होते हैं।

प्रत्येक बाइनरी को UUID द्वारा संदर्भित किया जाता है जिसे क्रैश लॉग फाइल में देखा जा सकता है:

 ... Binary Images: 0xe1000 - 0x1f0fff +example armv7 <aa5e633efda8346cab92b01320043dc3> /var/mobile/Applications/9FB5D11F-42C0-42CA-A336-4B99FF97708F/example.app/example 0x2febf000 - 0x2fedffff dyld armv7s <4047d926f58e36b98da92ab7a93a8aaf> /usr/lib/dyld ... 

इस में दुर्घटना लॉग को aa5e633efda8346cab92b01320043dc3 साथ example.app/example नामक ऐप बाइनरी इमेज से aa5e633efda8346cab92b01320043dc3

आप dwarfdump के साथ आपके पास बाइनरी पैकेज के यूयूआईडी की जांच कर सकते हैं:

 dwarfdump --uuid example.app/example UUID: AA5E633E-FDA8-346C-AB92-B01320043DC3 (armv7) example.app/example 

बाद में आपको जांच करनी चाहिए कि क्या डिबग प्रतीक आपके पास भी उस बाइनरी से संबंधित हैं:

 dwarfdump --uuid example.app.dSYM UUID: AA5E633E-FDA8-346C-AB92-B01320043DC3 (armv7) example.app.dSYM/Contents/Resources/DWARF/example 

इस उदाहरण में सभी संपत्ति एक साथ फिट होती हैं और आपको अपने स्टैकट्र्रेस का प्रतीक होना चाहिए।

symbolicatecrash के symbolicatecrash स्क्रिप्ट:

Xcode 8.3 में आपको स्क्रिप्ट को इन्हें करने में सक्षम होना चाहिए

 /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash -v example.crash 2> symbolicate.log 

यदि यह वहां नहीं है तो आप एक find . -name symbolicatecrash को चला सकते हैं -नाम का find . -name symbolicatecrash यह खोजने के लिए अपने Xcode.app निर्देशिका में क्रैश।

जैसा कि आप देख सकते हैं कि कोई अतिरिक्त मापदंड नहीं दिए गए हैं। इसलिए स्पॉटलाइट सर्च को चलाकर स्क्रिप्ट को अपना एप्लिकेशन बाइनरी और डिबग करें। यह डिबग प्रतीक को एक विशिष्ट सूचकांक के साथ com_apple_xcode_dsym_uuids जिसे com_apple_xcode_dsym_uuids कहा जाता है। आप यह स्वयं खोज कर सकते हैं:

 mdfind 'com_apple_xcode_dsym_uuids = *' 

resp।

 mdfind "com_apple_xcode_dsym_uuids == AA5E633E-FDA8-346C-AB92-B01320043DC3" 

पहला स्पॉटलाइट इनवॉइस आपको सभी अनुक्रमित डीएसवाईएम पैकेज देता है और दूसरा आपको विशिष्ट .dSYM साथ .dSYM पैकेज देता है। यदि स्पॉटलाइट आपके। .dSYM पैकेज नहीं .dSYM है, तो symbolicatecrash .dSYM न तो होगा। यदि आप यह सब चीज़ें करते हैं जैसे आपके ~/Desktop स्पॉटलाइट के सबफ़ोल्डर में सब कुछ ढूंढने में सक्षम होना चाहिए

यदि symbolicatecrash .dSYM आपके .dSYM पैकेज को पाता है, तो .dSYM में निम्न पंक्ति होना चाहिए।

 @dsym_paths = ( <SOME_PATH>/example.app.dSYM/Contents/Resources/DWARF/example ) 

अपने .app पैकेज को खोजने के लिए, निम्नलिखित की तरह स्पॉटलाइट खोज को symbolicatecrash द्वारा लागू किया जाता है symbolicatecrash :

 mdfind "kMDItemContentType == com.apple.application-bundle && (kMDItemAlternateNames == 'example.app' || kMDItemDisplayName == 'example' || kMDItemDisplayName == 'example.app')" 

यदि .app आपके .app पैकेज़ को पाता है, तो .app में निम्नलिखित अर्क होना चाहिए:

 Number of symbols in <SOME_PATH>/example.app/example: 2209 + 19675 = 21884 Found executable <SOME_PATH>/example.app/example -- MATCH 

यदि उन सभी संसाधनों को symbolicatecrash द्वारा पाया जाता है तो यह आपके क्रैश लॉग के प्रतीक संस्करण को प्रिंट करना चाहिए।

यदि आप अपने डीएसवायएम और। एपी फाइलों में सीधे पास नहीं कर सकते हैं।

 symbolicatecrash -v --dsym <SOME_PATH>/<App_URI>.app.dSYM/<APP_NAME>.app.dsym <CRASHFILE> <SOME_OTHER_PATH>/<APP_NAME>.app/<APP_NAME> > symbolicate.log 

नोट: संकेतित बैक्रेस टर्मिनल पर आउटपुट होगा, नहीं symbolicate.log

Xcode (3.2.2) के नवीनतम संस्करण के साथ, आप Xcode ऑर्गनाइज़र के डिवाइस लॉग्स अनुभाग में किसी भी दुर्घटना रिपोर्ट को खींच और छोड़ सकते हैं और वे स्वचालित रूप से आपके लिए प्रतीक बन जाएंगे। मुझे लगता है कि यह सबसे अच्छा काम करता है यदि आपने Build और Archive (Xcode 3.2.2 का भी हिस्सा) का उपयोग कर ऐप के उस संस्करण को बनाया है

मैंने सफलतापूर्वक किया, अब मैं आप सभी लोगों के साथ साझा करना चाहता हूं।

ये निम्न चरणों का पालन कर रहे हैं:

चरण 1: डेस्कटॉप में एक फ़ोल्डर बनाएँ, मैं इसे "क्रैश रिपोर्ट" नाम देता हूं और इसमें तीन फाइलें ("MYApp.app", "MyApp.app.dSYM", "MYApp_2013-07-18-06 क्रैश") डालता हूं।

चरण 2: ओपन फाइंडर और एप्लीकेशन पर जाएं, जहां आपको एक्सकोड आवेदन मिल जाएगा, इस पर राइट क्लिक करें और "पैकेज सामग्री दिखाएं" पर क्लिक करें, इसके बाद इस सरल पथ का पालन करें

" सामग्री- > डेवलपर- > प्लेटफार्म-> iPhoneOS.platform-> डेवलपर- > लाइब्रेरी- > निजीफ़्रेमवर्क- > DTDeviceKit.framework -> संस्करण- > ए-> संसाधन"

या

" सामग्री- > डेवलपर- > प्लेटफार्म-> iPhoneOS.platform-> डेवलपर- > लाइब्रेरी- > निजीफ़्रेमवर्क- > DTDeviceKitBase.framework -> संस्करण- > ए-> संसाधन"

या

Xcode 6 और इसके बाद के संस्करण के लिए पथ अनुप्रयोगों / Xcode.app / सामग्री / साझा फ़्रेमवर्क / DTDeviceKitBase.framework / संस्करण / ए / संसाधन है

जहां आप "प्रतीकक्रेश" फ़ाइल पाते हैं, उसे कॉपी करें और इसे "क्रैशआरपोर्ट" फ़ोल्डर में पेस्ट करें।

चरण 3: टर्मिनल लॉन्च करें, ये 3 कमांड चलाएं

  1. सीडी / उपयोगकर्ता / मैकमान / डेस्कटॉप / क्रैश रिपोर्ट और एंटर बटन दबाएं

  2. DEVELOPER_DIR = "/ अनुप्रयोग / Xcode.app / सामग्री / डेवलपर" निर्यात करें और Enter दबाएं

  3. ./symbolicatecrash -A -v MYApp_2013-07-18.crash MyApp.app.dSYM और प्रेस दर्ज करें अब इसकी पूर्ण .. (नोट: 6.4 या बाद के संस्करणों के पास -A विकल्प नहीं है – बस इसे छोड़ दें)

हैप्पी कोडिंग .. धन्यवाद

मैं अपने क्षुधा में एयरब्रैक का उपयोग करता हूं, जो दूरस्थ त्रुटि लॉगिंग का काफी अच्छा काम करता है I

यहां बताया गया है कि अगर बैकस्ट्रैज़ को इसकी ज़रूरत होती है तो मैं उन्हें एटीस के साथ कैसे चिन्हित करता हूं:

  1. Xcode (4.2) में आयोजक के पास जाते हैं, उस संग्रह पर राइट क्लिक करें, जिसमें से .ipa फ़ाइल उत्पन्न हुई थी।

  2. टर्मिनल में, सीसी को एक्सक्रैपिव में उदाहरण के लिए MyCoolApp 10-27-11 1.30 PM.xcarchive

  3. निम्नलिखित atos -arch armv7 -o 'MyCoolApp.app'/'MyCoolApp' (एकल उद्धरण मत भूलें)

  4. मैं उस कॉल में मेरे प्रतीक को शामिल नहीं करता। आपको क्या मिलता है एक खाली रेखा पर एक ब्लॉक कर्सर है

  5. तब मैं उस प्रतीक कर्सर पर अपने प्रतीक कोड की प्रतिलिपि / पेस्ट करता हूं और एंटर दबाएं। आप ऐसा कुछ देखेंगे:

    -[MyCoolVC dealloc] (in MyCoolApp) (MyCoolVC.m:34)

  6. आप एक ब्लॉकर्स कर्सर पर वापस आ गए हैं और आप अन्य प्रतीकों में पेस्ट कर सकते हैं।

पहले बिट में फिर से प्रवेश करने के बिना अपने बैकस्ट्रैस एक आइटम के माध्यम से जाने के लिए एक अच्छा समय बचाने है

का आनंद लें!

मैंने भी प्रतीक्षेत्र दुर्घटना चलाने से पहले एक ही निर्देशिका में डीएसआईएम, ऐप बंडल और क्रैश लॉग डाल दिए

फिर मैं चल रहे प्रतीकों को सरल बनाने के लिए मेरे .profile में परिभाषित इस फ़ंक्शन का उपयोग करता हूंक्रैैश:

 function desym { /Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash -A -v $1 | more } 

इसमें शामिल बहस आपकी सहायता कर सकते हैं

आप यह सुनिश्चित करने के लिए जांच कर सकते हैं कि कमांड चलाने के द्वारा रोशनी आपके "dysm" फ़ाइलों को देखती है:

 mdfind 'com_apple_xcode_dsym_uuids = *' 

अपने निर्देशिका में आपके पास dsym की तलाश करें

नोट: नवीनतम Xcode के रूप में, अब एक डेवलपर निर्देशिका नहीं है। आप इस उपयोगिता को यहां पा सकते हैं:

/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Vers आयनों / ए / संसाधन / symbolicatecrash

एक्सकोड 6.1.1 के लिए बस एक सरल और अद्यतन उत्तर।

कदम

1.Xcode> विंडो> उपकरण।

2. डिवाइस के तहत उपकरणों की एक सूची से डिवाइस चुनें।

3. डिवाइस देखें लॉग्स चुनें।

4.सभी लॉग्स अनुभाग के अंतर्गत आप सीधे report.crash ड्रॉप कर सकते हैं

5.Xcode स्वचालित रूप से आप के लिए क्रैश रिपोर्ट का प्रतीक होगा।

6.आप अपनी दुर्घटना रिपोर्ट में उल्लेखित दिनांक / समय के साथ दिनांक / समय से मिलान करके प्रतीकात्मक क्रैश रिपोर्ट पा सकते हैं।

भले ही मैं कुछ वर्षों के लिए ऐप्लिकेशंस विकसित कर रहा था, यह मेरी पहली बार एक बाइनरी डिबगिंग था और मुझे लगा कि एक पूरी तरह से एनओओबी का पता लगाना है कि सभी फाइलें कहां थीं। * एप * .डीएसवाईएम और क्रैश लॉग्स? मुझे यह पता लगाने के लिए कई पदों को पढ़ना पड़ा चित्र एक हज़ार शब्दों के बराबर है और मैं आशा करता हूं कि यह पोस्ट भविष्य में किसी और की मदद करेगी।

1- पहले आईट्यून कनेक्ट करें और अपने क्रैश लॉग डाउनलोड करें। नोट: अधिकतर मामलों में आप कुछ जैसी पा सकते हैं "रिपोर्ट दिखाने के लिए बहुत कम रिपोर्ट सबमिट की गई है।" असल में पर्याप्त उपयोगकर्ताओं ने एप्पल को क्रैश लॉग रिपोर्ट सबमिट नहीं की हैं, इस स्थिति में आप उस बिंदु पर बहुत कुछ नहीं कर सकते।

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

2- अब अगर आपने अपना कोड बदल नहीं लिया है, क्योंकि आपने अपनी बाइनरी को ऐप्पल से सबमिट किया था तो उस प्रोजेक्ट के लिए एक्सकोड लॉन्च करें और फिर उत्पाद -> पुरालेख फिर से करें। अन्यथा बस अपने नवीनतम प्रस्तुत द्विआधारी पाते हैं और उस पर राइट क्लिक करें।

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

XCode का उपयोग स्वचालित रूप से क्रैश रिपोर्ट का प्रतीक करने के लिए चरण:

  1. अपने मैक के लिए एक आईओएस डिवाइस से कनेक्ट करें (हां एक भौतिक, हाँ, मुझे पता है कि ये बेवकूफ है)

  2. "विंडो" मेनू से "उपकरण" चुनें यहां छवि विवरण दर्ज करें

  3. बाईं ओर अपने डिवाइस पर क्लिक करें और दाईं ओर DEVICE LOGS देखें यहां छवि विवरण दर्ज करें

  4. रुकिए। इसे दिखाने के लिए एक मिनट लग सकता है हो सकता है कि Command-A तो Delete जाएंगे इस गति को तेज करें

  5. महत्वपूर्ण अनिवार्य चरण: क्रैश रिपोर्ट का नाम बदलें जिसे iTunes से मिला .txt एक्सटेंशन से .crash एक्सटेंशन

  6. क्रैश रिपोर्ट को उस क्षेत्र में बाईं तरफ खींचें यहां छवि विवरण दर्ज करें

और फिर Xcode क्रैश रिपोर्ट का प्रतीक होगा और परिणाम प्रदर्शित करेगा।

स्रोत: https://developer.apple.com/library/ios/technotes/tn2151/_index.html

XCode 4 का उपयोग करना, कार्य भी सरल है:

  • खुला आयोजक,
  • लाइब्रेरी पर क्लिक करें | बाएं कॉलम में डिवाइस लॉग
  • स्क्रीन के तल पर "आयात करें" बटन पर क्लिक करें …

और वॉयला लॉग फ़ाइल आयात की जाती है और आपके लिए स्वचालित रूप से प्रतीक है बशर्ते आपने XCode -> उत्पाद -> आर्काइव का उपयोग करके निर्माण को संग्रहीत किया

XCode 4.2.1, ओपन आयोजक में, फिर लायब्रेरी / डिवाइस लॉग पर जाएं और क्रैश लॉग की सूची में अपने .crash फ़ाइल को खींचें। यह कुछ सेकंड के बाद आपके लिए प्रतीक होगा। ध्यान दें कि आपको उसी परिमाण का उपयोग करना चाहिए जो XCode पर मूल बिल्ड संग्रहीत किया गया था (अर्थात आपके बिल्ड के संग्रह को ऑर्गनाइज़र में मौजूद होना चाहिए)।

जादुई XCode ऑर्गनाइज़र मेरे ऐप का प्रतीक होने के बारे में यह जादू नहीं है क्रैश रिपोर्टों के लिए मुझे कोई भी प्रतीकों नहीं मिलीं हैं जो मुझे एप से एक असफल ऐप सबमिशन से वापस मिल गया था।

मैंने कमांड लाइन का उपयोग करने की कोशिश की, क्रैश रिपोर्ट को उसी फ़ोल्डर में .app फ़ाइल के रूप में डाल दिया (जो मैंने स्टोर को सबमिट किया है) और .dsym फ़ाइल:

 $ symbolicatecrash "My App_date_blahblah-iPhone.crash" "My App.app" 

यह मेरे ऐप के लिए केवल मुख्य प्रतीक कोड प्रदान करता है, न कि कोर फाउंडेशन कोड, लेकिन यह संख्या डंप से बेहतर था कि ऑर्गनाइज़र मुझे दे रहा है और मेरे ऐप में होने वाली दुर्घटना को खोजने और उसे ठीक करने के लिए पर्याप्त था। अगर कोई यह जानता है कि फाउंडेशन प्रतीकों को प्राप्त करने के लिए इसका विस्तार कैसे किया जाए तो इसकी सराहना की जाएगी।

मेरे मामले में, मैं क्रैश रिपोर्ट सीधे मेल से ऑर्गनाइज़र तक खींच रहा था। किसी कारण से, जो क्रैश रिपोर्टों को प्रतीक होने से रोका था (मुझे पता होना क्यों अच्छा लगेगा)

क्रैश रिपोर्टों को डेस्कटॉप पर पहली बार कॉपी करना, और तब उन्हें वहां से खींचकर ऑर्गनाइज़र के पास उन्हें ठीक से प्रतीक किया गया

बहुत विशिष्ट मामला, मुझे पता है लेकिन सोचा था कि मैं सिर्फ मामले में हिस्सा होगा।

यहां एक और मुद्दा है जो मुझे प्रतीकों के साथ होता है – यह ऐप के साथ काम नहीं करेगा जो अपने बंडल में रिक्त स्थान रखे (यानी 'टेस्ट एपी.एप')। नोट मुझे नहीं लगता है कि आप सबमिट करते समय अपने नाम पर रिक्त स्थान प्राप्त कर सकते हैं, इसलिए आप इन्हें भी हटा देना चाहिए, लेकिन यदि आपके पास पहले से ही क्रैश हो जो विश्लेषण की आवश्यकता है, पैच प्रतीक (4.3 जीएम) जैसे:

 240c240 < my $cmd = "mdfind \"kMDItemContentType == com.apple.application-bundle && kMDItemFSName == $exec_name.app\""; --- > my $cmd = "mdfind \"kMDItemContentType == com.apple.application-bundle && kMDItemFSName == '$exec_name.app'\""; 251c251 < my $cmd = "find \"$archive_path/Products\" -name $exec_name.app"; --- > my $cmd = "find \"$archive_path/Products\" -name \"$exec_name.app\""; 

एयरब्रैक का उपयोग करने वालों के लिए, ऊपर एक ठोस प्रतिक्रिया है लेकिन यह बिना मेरे लिए काम नहीं करेगा:

कुछ मेमोरी पतों के लिए काम करता है लेकिन दूसरों को नहीं, यकीन नहीं क्यों …

  • डेस्कटॉप पर या कहीं भी नया डायर बनाएं
  • Xcode आयोजक में सवाल में संग्रह खोजें
  • खोजक में प्रकट होने के लिए दो बार टैप करें
  • बंडल सामग्री दिखाने के लिए दो बार टैप करें
  • प्रतिलिपि .dysym फ़ाइल और .app फ़ाइल को नए dir में
  • सीडी नई डाइर में
  • यह कमांड चलाएं: एटोस-अरश armv7 -o 'Vimeo.app' / 'Vimeo'
  • टर्मिनल एक इंटरैक्टिव चाल दर्ज करेगा
  • मेमोरी एड्रेस में पेस्ट करें और एंट्री मारा, यह आउटपुट मेथड नाम और लाइन नंबर होगा
  • वैकल्पिक रूप से, इस कमांड को दर्ज करें: एटोस-अरश armv7 -o 'Vimeo.app' / 'Vimeo' केवल एक पते की जानकारी प्राप्त करने के लिए

मेरे लिए काम करने वाला संयोजन था:

  1. डीएसआईएम फ़ाइल को उस निर्देशिका में कॉपी करें जहां क्रैश रिपोर्ट थी
  2. ऐप ('MyApp.ipa खोलना') वाला आईपीए फाइल खोलें
  3. दुर्घटना रिपोर्ट और प्रतीक फ़ाइल के रूप में एक ही फ़ोल्डर में परिणामस्वरूप विस्फोट पेलोड से एप्लिकेशन बाइनरी की प्रतिलिपि बनाएँ ("MyApp.app/MyApp" की तरह कुछ)
  4. एक्सकोड के आयोजक के भीतर से क्रैश रिपोर्ट को आयात या पुन: प्रतीक्षित करें

एटोस का प्रयोग मैं क्रैश रिपोर्ट में दिए पते और ऑफसेट के साथ सही प्रतींक जानकारी को हल करने में सक्षम नहीं था। जब मैंने ऐसा किया, मैं कुछ और सार्थक देखता हूं, और यह एक वैध स्टैक ट्रेस लगता है।

इसे सही तरीके से चलने के लिए मुझे प्रतीकात्मक स्क्रैप की हैकिंग करने में बहुत कुछ करना था।

जहां तक ​​मैं बता सकता हूं, अभी प्रतीकों का चिह्न अब .app को उसी निर्देशिका में .dsym की आवश्यकता है। यह .app का पता लगाने के लिए .dsym का उपयोग करेगा, लेकिन यह प्रतीकों को खोजने के लिए dsym का उपयोग नहीं करेगा।

आपको इन प्रतीकों की कोशिश करने से पहले अपने प्रतीकों की एक प्रतिलिपि बनाना चाहिए जो इसे डीएसआईएम में दिखेंगे:

GetSymbolPathFor_dsymUuid फ़ंक्शन में लाइन 212 के आसपास

 212 my @executablePath = grep { -e && ! -d } glob("$dsymdir" . "/Contents/Resources/DWARF/" . $executable); 

मैचों में लाइन 265 के आसपास यूयूआईडी फ़ंक्शन

 265 return 1; 

यह बहुत आसान है, खोज करने के बाद मुझे पूरे क्रैश लॉग फ़ाइल का प्रतीक दिखाने के लिए स्पष्ट कदम दिखाई दिए।

  • एक फ़ोल्डर में प्रतिलिपि .app, crash_report और DSYM फ़ाइलें।
  • डिवाइस को एक्सकोड से कनेक्ट करें
  • फिर खिड़की पर जाएं -> उपकरण चुनें -> डिवाइस लॉग देखें
  • फिर इस डिवाइस का चयन करें, सभी लॉग हटाएं।
  • खींचें और डिवाइस दुर्घटना पर अपने दुर्घटना ड्रॉप। यह स्वचालित रूप से दुर्घटना का प्रतीक होगा रिपोर्ट पर ठीक क्लिक करें और उसे निर्यात करें।

खुश कोडिंग,
रियाज

मैं एक स्क्रिप्ट पसंद करता हूं जो कि मेरे सभी क्रैश लॉग का प्रतीक होगा।

पूर्व शर्त

एक फ़ोल्डर बनाएं और वहां 4 चीजें रखें:

  1. symbolicatecrash क्रैश पर्ल स्क्रिप्ट – बहुत सारे ऐसे उत्तर हैं जो बताता है कि यह स्थान है

  2. दुर्घटनाओं से मेल खाते के निर्माण का संग्रह (एक्सकोड ऑर्गनाइज़र से। Show in Finder और कॉपी में दिखाए गए सरल) [मुझे यकीन नहीं है कि यह आवश्यक है]

  3. सभी xccrashpoint पैकेज – (Xcode ऑर्गनाइजर से। Show in Finder , आप निर्देशिका में सभी संकुल को कॉपी कर सकते हैं, या एक xccrashpoint को आप प्रतीक करना चाहते हैं)

  4. उस लघु स्क्रिप्ट को निर्देशिका में जोड़ें:

     #!/bin/sh echo "cleaning old crashes from directory" rm -P *.crash rm -P *.xccrashpoint rm -r allCrashes echo "removed!" echo "" echo "--- START ---" echo "" mkdir allCrashes mkdir symboledCrashes find `ls -d *.xccrashpoint` -name "*.crash" -print -exec cp {} allCrashes/ \; cd allCrashes for crash in *.crash; do ../symbolicatecrash $crash > ../symboledCrashes/V$crash done cd .. echo "" echo "--- DONE ---" echo "" 

लिपी

जब आप स्क्रिप्ट चलाते हैं, तो आपको 2 निर्देशिकाएं मिलेंगी

  1. allCrashes – सभी allCrashes से सभी दुर्घटनाओं वहाँ होगा

  2. symboledCrashes क्रैश – वही दुर्घटनाओं लेकिन अब सभी प्रतीकों के साथ।

  3. आपको स्क्रिप्ट चलाने से पहले डायरेक्टरी को साफ करने की आवश्यकता नहीं है। यह स्वचालित रूप से साफ हो जाएगा सौभाग्य!

दुर्घटनाओं का संकेत देने के लिए, स्पॉटलाइट को .dSYM फ़ाइल ढूंढने में सक्षम होना चाहिए जो उस समय उत्पन्न हुई थी जब आपने एप्पल को सबमिट की गई बाइनरी थी। चूंकि इसमें प्रतीक की जानकारी है, यदि आप उपलब्ध नहीं हैं, तो आप भाग्य से बाहर होंगे।

मुझे इस तथ्य के बारे में थोड़ा क्रोधी है कि यहां कुछ भी नहीं "बस काम" है, इसलिए मैंने कुछ जांच की और नतीजा ये है:

सेट अप करें: क्विंसीकिट रिपोर्ट्स को प्राप्त करने वाले अंत में कोई प्रतीकात्मकता स्थापित नहीं की जा सकती है क्योंकि मैं समझ नहीं सका कि वे क्या काम कर रहे थे।

तय: ऑनलाइन सर्वर से क्रैश रिपोर्ट डाउनलोड करें उन्हें 'क्रैश' कहा जाता है और डिफ़ॉल्ट रूप से ~ / Downloads / फ़ोल्डर में जाते हैं इस बात को ध्यान में रखते हुए, यह स्क्रिप्ट "सही काम करेगी" और क्रैश रिपोर्ट्स Xcode (ऑर्गनाइज़र, डिवाइस लॉग) में जाएंगी और प्रतीककरण किया जाएगा।

लिपी:

 #!/bin/bash # Copy crash reports so that they appear in device logs in Organizer in Xcode if [ ! -e ~/Downloads/crash ]; then echo "Download a crash report and save it as $HOME/Downloads/crash before running this script." exit 1 fi cd ~/Library/Logs/CrashReporter/MobileDevice/ mkdir -p actx # add crash report to xcode abbreviated cd actx datestr=`date "+%Y-%m-%d-%H%M%S"` mv ~/Downloads/crash "actx-app_"$datestr"_actx.crash" 

यदि आप क्विन्सीकिट / पीएलसीआर का उपयोग करते हैं तो दो चीजें करते हुए आप Xcode ऑर्गनाइजर में खींचें और ड्रॉप कर सकते हैं।

सबसे पहले, आपको दूरस्थ स्क्रिप्ट व्यवस्थापक / actionapi.php ~ लाइन 202 को संपादित करना है। यह टाइमस्टैम्प सही नहीं लगता है, इसलिए फ़ाइल को 'क्रैश' नाम से समाप्त होता है, जिसे Xcode नहीं पहचानता है (यह कुछ चाहता है डॉट क्रैश):

 header('Content-Disposition: attachment; filename="crash'.$timestamp.'.crash"'); 

दूसरे, आईओएस पक्ष में क्विन्सीकीट बीडक्रैशरेपोर्टटेफ्टफॉर्मेट.एम ~ रेखा 176 में, @"[TODO]" @"TODO" को खराब वर्णों के आसपास बदलने के लिए बदलें।

एटीओस को बहिष्कृत किया जा रहा है ताकि आप OSX 10.9 या बाद में चल रहे हो, आपको चलाने की आवश्यकता हो सकती है

xcrun atos

चेतावनी: / usr / bin / atos आगे बढ़ रहा है और भविष्य के OS X रिलीज से निकाल दिया जाएगा। यह अब Xcode डेवलपर टूल में उपलब्ध है: xcrun atos

मैं एक मूल ऐप अपलोड बाइनरी अस्वीकृति में त्रुटियों को इंगित करने के लिए Textwrangler का उपयोग करना चाहता हूं। (क्रैश डेटा आपके iTunes कनेक्ट खाते में मिलेगा।) ऊपर की तरफ से सचिन की विधि का उपयोग करते हुए मैं मूल क्रैश को टेक्सट्रार्लर को कॉपी करता हूं, फिर प्रतिलिपि की प्रतिलिपि बनाएँ crash फ़ाइल जिसे मैंने एक और टेक्स्टवर्लन फ़ाइल में बनाया है। दो फाइलों की तुलना अंतर मतभेद। प्रतीक फ़ाइल फ़ाइल में अंतर होगा जो समस्या की फ़ाइल और पंक्ति संख्या बताता है।