2012-04-12 20 views
8

जब भी मेरे आवेदन पर कोई दुर्घटना होती है, तो क्रैश लॉग आयोजक के अंदर प्रतीकात्मक रूप में दिखाए जाते हैं। अब समस्या यह है कि आईओएस कक्षाओं को इंगित करने वाले सभी मेमोरी पते प्रतीकात्मक ठीक हो रहे हैं लेकिन मेरे आवेदन वर्गों के मेमोरी पते प्रतीकात्मक नहीं हो रहे हैं। कौन सी एक्सकोड परियोजना संपत्ति मुझे सक्षम करने के लिए सेट करने की आवश्यकता है।एक्सकोड में क्रैश लॉग का प्रतीक 4.3.2

ये वर्तमान बिल्ड सेटिंग्स हैं जो आईओएस कक्षाओं के प्रतीक को सक्षम करती हैं। मैं एक्सकोड 4.3.2 का उपयोग कर रहा हूँ।

Current build settings

+0

वैसे आप Xcode 3.x एक ही सिस्टम पर स्थापित किया है करने के लिए होता है? – lukasz

+0

@ लुकाज़ आप इसके लिए क्यों पूछ रहे हैं? – Till

+0

यह मैंने जो सुना, उससे प्रतीकात्मकता के साथ कुछ समस्याएं पैदा हुईं। और जब भी मैं अंततः 3.x से छुटकारा पा लिया, तब भी मेरी समस्याएं गायब हो गईं। हालांकि, एक संयोग हो सकता है। – lukasz

उत्तर

1

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

[1] एक्सकोड-> ऑर्गनाइज़र पर जाकर .dSym फ़ाइल खोजें, अभिलेखागार पर क्लिक करके, संग्रह पर राइट क्लिक करें, और सीडी यह निर्देशिका (आप फ़ोल्डर को शेल विंडो में खींच सकते हैं)।

[2] डीएसवाईएम निर्देशिका में सीडी।

[3] अपने कोड में एक लाइन संख्या में हेक्स पते का अनुवाद करने में dwarfdump कमांड चलाएँ:,

dwarfdump --arch armv7 myApp.dSYM --lookup 0xaabbccdd | grep 'Line table' 
0

नहीं करने के लिए तैनाती postprocessing सेट करके देखें।

DEPLOYMENT_POSTPROCESSING। इस सेटिंग को सक्रिय करने से संकेत मिलता है कि बाइनरी को छीन लिया जाना चाहिए और फ़ाइल मोड, मालिक और समूह जानकारी मानक मानों पर सेट की जानी चाहिए।

+0

में अच्छी तरह से काम करता था, DEPLOYMENT_POSTPROCESSING को सेट करने से समस्या हल नहीं होती है। – Abhinav

1

Strip Debug Symbols During Copy: गैर डिबग विन्यास पर YES होना चाहिए बनाता है, क्योंकि यह ऊपर अपने अनुप्रयोग द्विआधारी 30-50%

Debug Information Format उड़ा देगा: DWARF with dSYM File होना चाहिए सभी विन्यास के लिए, से अपने प्रतीकों symbolicate करने में सक्षम हो कोई बाइनरी

अब मुझे लगता है कि आप डीबग बिल्ड पर यह कोशिश कर रहे हैं, जो कि एक्सकोड में बिल्ड कमांड के नवीनतम परिणाम नहीं हैं। आपको याद रखना होगा कि जब भी आप बिल्ड कमांड चलाते हैं, तो एक नया निष्पादन योग्य और एक नया डीएसवाईएम पैकेज उत्पन्न किया जा रहा है, और पिछला एक ओवरराइड हो जाता है! (यदि आप पुरालेख सुविधा का उपयोग करते हैं)

प्रतीकात्मक स्क्रिप्ट आपके ऐप की क्रैश रिपोर्ट से यूयूआईडी को पार करती है और स्पॉटलाइट के माध्यम से संबंधित .app और .app.dSYM बंडल की खोज करती है। तो यदि कोई स्पॉटलाइट लक्ष्य पथ को अनुक्रमणित नहीं कर रहा है या बाइनरी को किसी अन्य बिल्ड रन द्वारा प्रतिस्थापित किया गया है, तो यह ऐप्स प्रतीकों का प्रतीक नहीं बन पाएगा।

+0

संबंधित क्रैश लॉग का प्रतीक करने के लिए, मैं एक्सकोड में प्रतीकों का एक सेट कैसे जोड़ सकता हूं? –

+0

उस बिल्ड का डीएसवाईएम स्पॉटलाइट द्वारा उपलब्ध और अनुक्रमित होना चाहिए। फिर यह पाया जाना चाहिए। इसलिए। जैसे बीटा संस्करणों और ऐप स्टोर रिलीज को संग्रहीत करके, आपको ठीक होना चाहिए। डीबग बिल्ड संग्रहित नहीं हैं, और हर नया निर्माण पिछले डीएसवाईएम को ओवरराइट करेगा। और यह अलग होगा, भले ही आपने कोड की एक पंक्ति नहीं बदली। – Kerni

0

ऐसा लगता है कि xcode आपके संग्रह (यहां तक ​​कि डीबग में भी) का प्रतीक करने के लिए अंतिम संग्रहित बिल्ड .dsym फ़ाइल का उपयोग करता है, इसलिए अपने ऐप को संग्रहित करने का प्रयास करें।

अपने ऐप को संग्रहीत करने के बाद अपनी क्रैश रिपोर्ट को फिर से सिंबिकेट करें।

यह मेरे लिए काम किया।

+0

यह सही नहीं है! सिग्नल रिपोर्ट क्रैश रिपोर्ट उत्पन्न करने वाले ऐप्स UUID के अनुसार मेल खाने वाले डीएसवाईएम को खोजने के लिए स्पॉटलाइट का उपयोग करती है। प्रत्येक निर्माण के परिणामस्वरूप एक नया यूयूआईडी होगा। संग्रहण सुनिश्चित करता है कि आपके पास उन बिल्डों के लिए सही डीएसवाईएम होगा। लेकिन उदा। डीबग बिल्डिंग करते समय, प्रत्येक नया निर्माण पिछले एक को ओवरराइट करेगा और पहले के निर्माण से दुर्घटनाओं का प्रतीक अब और संभव नहीं है। – Kerni

संबंधित मुद्दे