2012-05-22 19 views
13

मैं एक्सकोड 4.3.1 का उपयोग कर रहा हूं। दुर्घटना अपने डिवाइस पर हुआ है, इसलिए मैं इसे कनेक्ट करें और आयोजक को खोलने, मेरे उपकरण लॉग करने के लिए जाना, क्रैश रिपोर्ट मिल जाए, और यहाँ यह क्या पढ़ता है:मेरी क्रैश रिपोर्ट क्यों प्रतीकात्मक नहीं हैं?

Exception Type: EXC_CRASH (SIGABRT) 
Exception Codes: 0x00000000, 0x00000000 
Crashed Thread: 0 

Last Exception Backtrace: 
0 CoreFoundation     0x3514488f __exceptionPreprocess + 163 
1 libobjc.A.dylib     0x3656b259 objc_exception_throw + 33 
2 CoreFoundation     0x35144789 +[NSException raise:format:] + 1 
3 CoreFoundation     0x351447ab +[NSException raise:format:] + 35 
4 CoreFoundation     0x350b168b -[__NSCFDictionary setObject:forKey:] + 235 
5 myapp       0x0015b4a7 0xe8000 + 472231 
6 myapp       0x0018add1 0xe8000 + 667089 
7 myapp       0x0013cd5b 0xe8000 + 347483 
8 Foundation      0x30ffb60d __NSFireTimer + 145 
9 CoreFoundation     0x35118a33 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 15 
10 CoreFoundation     0x35118699 __CFRunLoopDoTimer + 365 
11 CoreFoundation     0x3511726f __CFRunLoopRun + 1207 
12 CoreFoundation     0x3509a4a5 CFRunLoopRunSpecific + 301 
13 CoreFoundation     0x3509a36d CFRunLoopRunInMode + 105 
14 GraphicsServices    0x36396439 GSEventRunModal + 137 
15 UIKit       0x32190e7d UIApplicationMain + 1081 
16 myapp       0x000f6aff 0xe8000 + 60159 
17 myapp       0x000e9370 0xe8000 + 4976 


Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 libsystem_kernel.dylib   0x34f3832c __pthread_kill + 8 
1 libsystem_c.dylib    0x36e34208 pthread_kill + 48 
2 libsystem_c.dylib    0x36e2d298 abort + 88 
3 libc++abi.dylib     0x30af9f64 abort_message + 40 
4 libc++abi.dylib     0x30af7346 _ZL17default_terminatev + 18 
5 libobjc.A.dylib     0x3656b350 _objc_terminate + 140 
6 libc++abi.dylib     0x30af73be _ZL19safe_handler_callerPFvvE + 70 
7 libc++abi.dylib     0x30af744a std::terminate() + 14 
8 libc++abi.dylib     0x30af881e __cxa_rethrow + 82 
9 libobjc.A.dylib     0x3656b2a2 objc_exception_rethrow + 6 
10 CoreFoundation     0x3509a506 CFRunLoopRunSpecific + 398 
11 CoreFoundation     0x3509a366 CFRunLoopRunInMode + 98 
12 GraphicsServices    0x36396432 GSEventRunModal + 130 
13 UIKit       0x32190e76 UIApplicationMain + 1074 
14 myapp       0x000f6af8 0xe8000 + 60152 
15 myapp       0x000e9368 0xe8000 + 4968 

मैंने सोचा था कि Xcode मेरे लिए क्रैश रिपोर्ट symbolicating हैंडल खुद ब खुद? मुझे कोई लाइन नंबर या विधियां क्यों नहीं मिल रही हैं? और मेरे अपवाद कोड 0x00000000 क्यों हैं?

मैंने the method found here की कोशिश की, लेकिन जब मैं किसी भी स्मृति पते में टाइप करता हूं, तो आउटपुट केवल वही स्मृति पता होता है। क्या यह सबसे अधिक जानकारी है जो मैं क्रैश लॉग से बाहर निकल सकता हूं, या यहां कुछ गड़बड़ है?

+0

क्या आपने [atos] (https://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man1/atos.1.html) के माध्यम से क्रैश रिपोर्ट चलाने का प्रयास किया है? – lottscarson

+0

हां मैंने ऊपर दिए गए लिंक में मिली विधि की कोशिश की, जो एटोस विधि है, लेकिन जो भी मेमोरी पता मैं टाइप करता हूं, मैं 'atos -arch armv7 -o' myapp.app '/' myapp 'स्मृति पता' के बाद टाइप करता हूं, यह बस कुछ भी लॉग आउट करता है मैं मेमोरी एड्रेस के लिए टाइप करता हूं, इसलिए आउटपुट मेमरी एड्रेस – Snowman

+0

एक और बात - आखिरी दुर्घटना आज सुबह हो रही है, और मैंने कोड की कुछ पंक्तियां (इंटरफेस सामान) बदल दी और इसे बनाया। मैं आमतौर पर संग्रह या कुछ भी नहीं बनाता, बस निर्माण करता हूं। तो मेरे पास क्रैश लॉग पिछले निर्माण से है (हालांकि ज्यादा नहीं बदला गया है)। अगर मैं संग्रह विकल्प का उपयोग नहीं करता, तो क्या यही कारण हो सकता है? – Snowman

उत्तर

8

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

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

atos -arch armv7 -o 'appname.app.dSYM' 0x0015b4a7

दुर्घटना ही उदा करने के लिए एक NSDictionary मान सेट किया जा सकता है एक शून्य कुंजी।

+2

सौभाग्य से मेरे लिए 4.3.2 एक्सकोड संस्करण के साथ लॉग को लाइन संख्याओं के साथ सिग्नल किया गया है और वर्तमान निर्माण संग्रह w/o को प्रतिलिपि के दौरान 'स्ट्रिप डीबग सिग्नल' सेट को डीबग कॉन्फ़िगरेशन के लिए 'NO' पर सेट किया गया है। –

+0

फिर डीएसवाईएम अभी भी आपके मैक पर उपलब्ध है। प्रतीकात्मक स्क्रिप्ट स्पॉटलाइट का उपयोग कर इसके लिए खोज करती है। निष्पादन योग्य का हिस्सा होने वाले प्रतीक रेखा संख्या प्रदान नहीं करते हैं। कभी नहीँ। – Kerni

+0

समझ में आता है, धन्यवाद। –

8

उम्मीद है कि यह किसी अन्य समस्या के साथ किसी और की मदद कर सकता है, मेरे लिए जो काम किया गया वह संग्रह निर्देशिका में निम्न आदेश चला रहा था (जैसे/उपयोगकर्ता/my_user/लाइब्रेरी/डेवलपर/एक्सकोड/अभिलेखागार/2012-09 -24, तो पहले वहां सीडी)

mdimport . 

उसके बाद प्रतीकात्मक क्रैश स्क्रिप्ट चलाने का प्रयास करें। एक्सकोड में, अपने ऑर्गनाइज़र, डिवाइस लॉग पर जाएं, और क्रैश लॉग पर राइट क्लिक करके "पुनः-सिग्नलिकेट लॉग" चुनें।

+2

यह एक ऐप के लिए पूरी तरह से काम करता है जो मेरे पास बाजार में है। प्रतिभाशाली! आपको यह पता लगाने के लिए क्या प्रेरित किया? – paiego

+0

यह मेरे लिए भी पूरी तरह से काम किया। –

+0

मेरे लिए भी काम किया! धन्यवाद! –

4

मैं क्रैश रिपोर्ट को ऑर्गनाइज़र-> डिवाइस-> लाइब्रेरी-> डिवाइस लॉग में खींचकर एक्सकोड 4.5.1 प्राप्त नहीं कर सका।

और मैं उपरोक्त पोस्ट को dSYM निर्दिष्ट करके क्रैश के प्रतीकात्मक पते को प्राप्त नहीं कर सकता था।

मैंने atos का उपयोग किया है, लेकिन मैं केवल xcarchive फ़ाइल (वास्तव में यह एक निर्देशिका है) के अंदर प्रतीक फ़ाइल का पूरा पथ निर्दिष्ट करके इसे काम करने के लिए प्राप्त कर सकता हूं। उदाहरण:

cd dir_where_the_xcarchive_is 
atos -arch armv7 -o myApp\ 9-18-12\ 5.28\ PM.xcarchive/dSYMs/myApp.app.dSYM/Contents/Resources/DWARF/myApp 0x0001943a 
1

अपवाद कोड के बारे में अपने प्रश्न के बारे में ...

Exception Codes: 0x00000000, 0x00000000 

... this Apple Technical Note अपना उत्तर मिल सकता। संक्षेप में, यह क्रैश रिपोर्ट मानक दस्तावेज़ वाले क्रैश-प्रकार द्वारा उत्पन्न नहीं हुई थी।

बारे में 16 क्रैश लॉग में लाइनों, आप एक पंक्ति है कि पाठ एक या अधिक हेक्साडेसिमल मान, जो प्रोसेसर-विशिष्ट कोड है कि आप प्रकृति के बारे में अधिक जानकारी दे सकते हैं कर रहे हैं के बाद से शुरू होता है देखेंगे दुर्घटना काआप इन कोड से बता सकते हैं यदि आवेदन (उदाहरण के लिए, एक बुरा स्मृति का उपयोग, एक अपवाद, आदि) एक प्रोग्रामिंग त्रुटि के कारण दुर्घटनाग्रस्त हो गया, या यदि आवेदन कुछ अन्य कारण से समाप्त किया गया था, उदाहरण के लिए:

अपवाद कोड 0x8badf00d इंगित करता है कि एक एप्लिकेशन आईओएस द्वारा समाप्त रहा है क्योंकि एक वॉचडॉग टाइमआउट हुआ। एप्लिकेशन सिस्टम ईवेंट को लॉन्च करने, समाप्त करने या जवाब देने में बहुत लंबा समय लगा। एक इसका सामान्य कारण मुख्य थ्रेड पर सिंक्रोनस नेटवर्किंग कर रहा है। अपवाद कोड 0xbad22222 इंगित करता है कि एक वीओआईपी एप्लिकेशन आईओएस द्वारा समाप्त कर दिया गया है क्योंकि यह अक्सर फिर से शुरू हुआ। अपवाद कोड 0xdead10cc इंगित करता है कि आवेदॉन को आईओएस द्वारा समाप्त कर दिया गया है क्योंकि यह संसाधन (जैसे पता पुस्तिका डेटाबेस) पर पृष्ठभूमि में चलते समय सिस्टम पर आयोजित किया गया है। अपवाद कोड 0xdeadfa11 इंगित करता है कि उपयोगकर्ता द्वारा एप्लिकेशन को बल दिया गया है। फोर्स क्विट तब होते हैं जब उपयोगकर्ता पहले "बंद करने के लिए स्लाइड" प्रकट होने पर चालू/बंद बटन दबाता है, फिर होम बटन दबाता है। मानना ​​उचित है कि उपयोगकर्ता ने ऐसा इसलिए किया है क्योंकि एप्लिकेशन अप्रतिबंधित हो गया है, लेकिन इसकी गारंटी नहीं है - बल छोड़ने से एप्लिकेशन पर काम किया जाएगा।

0

इसके बजाय Crashlytics का उपयोग करें।

यह वास्तविक समय क्रैश रिपोर्ट के बारे में तत्काल (ईमेल के माध्यम से अधिसूचित) प्रदान करता है, और सटीक पंक्ति # जहां दुर्घटना हुई।

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