2009-09-02 7 views
6

विषय यह सब सचमुच कहता है ... क्या वहां कहीं भी एक्सकोड के डीबगर के लिए एक अच्छा ट्यूटोरियल है? मुझे सामानों के ड्रब्स और ड्रब्स मिल रहे हैं लेकिन कुछ भी व्यापक नहीं है या जो काफी गहरा हो जाता है। मेरी समस्या अभी है कि इस ...एक्सकोड के डीबगर का सही तरीके से उपयोग करने के तरीके पर एक अच्छा ट्यूटोरियल कहां है?

#0 0x90d9c688 in objc_msgSend 
#1 0x30506515 in NSPopAutoreleasePool 
#2 0x30901697 in _UIApplicationHandleEvent 
#3 0x32046375 in PurpleEventCallback 
#4 0x30245560 in CFRunLoopRunSpecific 
#5 0x30244628 in CFRunLoopRunInMode 
#6 0x308f930d in -[UIApplication _run] 
#7 0x309021ee in UIApplicationMain 
#8 0x00001ff8 in main at main.m:14 

... इस के साथ संयुक्त ...

0x90d9c688 <+0024> mov 0x20(%edx),%edi 

... और इस ...

EXC_BAD_ACCESS 

है .. ज्यादा मदद नहीं कर रहा है। या बिल्कुल, वास्तव में। मैं कोड की लाइनों पर टिप्पणी करने का सहारा ले रहा हूं और एक बेहतर तरीका होना चाहिए।

धन्यवाद

अद्यतन: मुझे लगता है कि शायद मेरी निकाल, असली सवाल से एक विकर्षण का एक सा था, हालांकि सुझावों की मदद की है चीज़ें थोड़ी समझाने। जो मैं वास्तव में प्राप्त कर रहा हूं वह न केवल उपरोक्त का स्पष्टीकरण है, बल्कि सामान्य रूप से डीबगर का उपयोग करता है। मेरे पास आमतौर पर प्रश्न हैं:

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

मुझे पता है कि ये व्यापक हैं, और शायद व्यक्तिगत रूप से पूछा जाना चाहिए, लेकिन मैं इन विषयों के साथ एसओ स्पेस को अव्यवस्थित नहीं करना चाहता था जो पहले से ही कहीं और दस्तावेज हो सकते हैं।

मैंने यह भी देखा एक लगभग डुप्लिकेट प्रश्न यहाँ पूछा है: What are some Objective-c debugging tips?

+0

मुझे पता है कि यह एक पुराना सवाल है। लेकिन किसी भी व्यक्ति के लिए जो इस पर ठोकर खाता है, मैंने पाया [यह रे वेंडरलिच ट्यूटोरियल] (http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1) बिल्कुल उत्कृष्ट। –

उत्तर

2

दुर्घटना एप्पल के कोड के अंदर है और यह के कारण वास्तव में कहीं और है (यही कारण है कि डिबगर आप स्रोत प्रदर्शित नहीं करता है) - तुम ' मैंने एक अस्थायी वस्तु जारी की जिसे ऑटोरेलीज पूल द्वारा जारी किया जाना था। इसने ऑटोरेलीज पूल को दुर्घटनाग्रस्त कर दिया।

आप केवल वस्तुओं जो जारी करने के लिए माना जाता कर रहे हैं: retain

  • का उपयोग कर

    • आप अपने आप को बनाए रखा गया है केवल init, copy और new तरीकों (और उनके वेरिएंट युक्त इन शब्दों)
    • से लौट रहे थे

    दुर्भाग्यवश आप इसे डिबगर से नहीं सीख सकते हैं, केवल दस्तावेज़ीकरण और अनुभव से ...

    आप ऐसी त्रुटियों (कभी-कभी) खोजने के लिए Clang Analyzer का उपयोग कर सकते हैं।

  • +0

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

    2

    यहाँ XCode 4 के लिए डिबगर की सुविधाओं पर एक great tutorial है।

    आपके प्रश्न के संबंध में क्यों डीबगर स्रोत कोड दृश्य से असेंबली दृश्य में जाता है ... यह असेंबली दृश्य पर जाता है जब कोड का निष्पादन कक्षाओं में जाता है जो आपकी स्रोत कोड फ़ाइलों का हिस्सा नहीं हैं ... उदा। जब आपके कोड में कदम उठाने वाले फ्रेमवर्क का हिस्सा होते हैं जिन्हें आप UIKit जैसे उपयोग करते हैं।

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