2010-12-22 21 views
13

NSManagedObjectContext उपयोग करना चाहिए पृष्ठभूमि के अंदर से: मैं इस संदेश को हो रही है:डिबगिंग SIGABRT:

अभिकथन विफल: (_Unwind_SjLj_Resume() वापस नहीं कर सकते हैं), समारोह _Unwind_SjLj_Resume, फ़ाइल/SourceCache/libunwind/libunwind-24.1/src/Unwind-sjlj.c, लाइन 326.

कार्यक्रम प्राप्त संकेत: "SIGABRT"।

चेतावनी: /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.2.1 (8C148) /Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib के लिए प्रतीकों को पढ़ने में असमर्थ (फ़ाइल नहीं है)।

ऐसा तब होता है जब मैं रन के साथ कई लोगों के साथ एक प्रयोग ऑब्जेक्ट हटा देता हूं जिसमें नमूना के साथ कई लोग हैं जो डेटा के साथ हैं। प्रयोग भी करने के लिए कई पेज के साथ करने के लिए कई प्रदर्शन जो चलाने के लिए करने के लिए कई के साथ है जो है। मैं ग्राफ की चक्रीय प्रकृति को इंगित करने के लिए इसका जिक्र करता हूं।

alt text

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

मैं हटाए गए नियमों का उपयोग कर रहा था लेकिन अब इन सभी वर्गों के लिए -prepareForDeletion विधियों के साथ संयोजन में "नो एक्शन" नियमों को हटा दिया गया है। इस बदलाव से कोई फर्क नहीं पड़ता। दोनों मामलों में, त्रुटि संदेश वही है।

दिलचस्प बात यह है कि जब मैं एप्लिकेशन को पुन: लॉन्च, सभी वस्तुओं है कि हटाने के लिए चिह्नित किया गया हटा दिया गया है।

इसके अलावा, यदि किसी प्रयोग में कोई रन ऑब्जेक्ट नहीं है, तो बिना किसी घटना के हटाना काम करता है। उस मामले के लिए, एक प्रयोग से एक रन को हटाने से भी काम करता है।

मुझे उम्मीद है कि किसी ने ऐसा कुछ देखा है और इस पर क्या सलाह होगी इस पर सलाह दे सकते हैं। या, अगर किसी को सलाह है कि आईओएस 4.2.1 के लिए libXcodeDebuggerSupport.dylib कैसे प्राप्त करें, यह भी उपयोगी हो सकता है।

अद्यतन: मैं सलाह here पाया और iOS 4.2.1 के लिए libXcodeDebuggerSupport.dylib खोजने के लिए Xcode प्राप्त करने में सक्षम था पीछा किया। लेकिन इससे समस्या का निदान करने में कोई मदद नहीं मिली - जो बनी रहती है।

अद्यतन 2: थोड़ा पढ़ने और तनाव मुक्त-sjlj.c का एक संस्करण डाउनलोड करने के बाद, ऐसा लगता है कि मैं न आया हुआ अपवाद की तरह कुछ के साथ काम कर रहा हूँ। मुझे यकीन नहीं है कि यह मेरी मदद कैसे करता है ...

अपडेट 3: कामचटका के लिए धन्यवाद, मैंने कुछ ऐसा किया जो मुझे शायद कुछ दिन पहले करना चाहिए था: "उद्देश्य-सी अपवादों पर रोकें" चालू करें। इससे मुझे यह देखने की इजाजत मिली कि एक हटाए गए ऑब्जेक्ट का संदर्भ अभी भी आयोजित किया जा रहा था - और, बदतर, हटाए गए ऑब्जेक्ट को देखकर महत्वपूर्ण मूल्य था। इस निश्चित समस्या को ठीक करना और मैं -prepareForDeletion विधियों के बजाय हटाए गए नियमों का उपयोग करने के लिए वापस लौटने में सक्षम था।

+0

अपने मूल हटाने नियम क्या था? डेटा स्तर पर सभी तरह से Cascasde? क्या कोई कारण है कि प्रदर्शन पृष्ठ/प्रयोग वृक्ष के माध्यम से चलने के बजाए रनों तक सीधे पहुंच है? –

+0

डीबगर चेतावनी से छुटकारा पाने के लिए 3.2.5 को एक्सकोड अपडेट करें। आपकी डिवाइस 4.2.1 है जिसके लिए 3.2.5 –

+0

@ मिचेल के डिबग प्रतीकों की आवश्यकता है: डिस्प्ले एक विशिष्ट पृष्ठ के लिए प्रदर्शित रनों का प्रबंधन करता है, ताकि यह हमेशा प्रयोग द्वारा निहित रनों का सबसेट होगा। एक विशेष प्रयोग के लिए कई पेज हो सकते हैं, प्रत्येक में एकाधिक डिस्प्ले और प्रत्येक डिस्प्ले रनों का एक सेट दिखाता है। मुझे उम्मीद है कि यह समझ में आता है। – westsider

उत्तर

16

आप सक्रिय करने के लिए "रन> ऑब्जेक्टिव-सी अपवाद पर बंद करो" की कोशिश करनी चाहिए। इसने मुझे उस स्थान को खोजने की इजाजत दी जहां एक वस्तु को एक गलती में बदल दिया गया था जो समस्या का मूल कारण था।

+1

इस सलाह के बाद, मैं अपने दुर्घटनाओं के कारण को ट्रैक करने में सक्षम था। मेरे पास कुछ केवीओ कोड था जो हटाए गए ऑब्जेक्ट का संदर्भ दे रहा था, और यह कोड हटाने की प्रक्रिया के दौरान गोलीबारी कर रहा था। तो, आखिरकार, समस्या एक -dealloc विधि में थी। – westsider

+5

XCode4 में यह सेटिंग कहां है? – tomwhipple

+2

@tomwhipple: http://stackoverflow.com/questions/4961770/run-stop-on-objective-c-exception-in-xcode-4 देखें – RickDT

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