Xcode

2011-11-25 15 views
6
में एक चयनकर्ता पर एक प्रतीकात्मक ब्रेकप्वाइंट जोड़े

मेरे एप्लिकेशन में एक बग जो निम्नलिखित (आंशिक) स्टैकट्रेस के साथ दिखाई देता है:Xcode

2011-11-25 01:55:59.760 Events2[6650:403] -[Event boolValue]: unrecognized selector sent to instance 0x7fb903928670 

इस डिबग करने के लिए मैं पर एक प्रतीकात्मक ब्रेकप्वाइंट जोड़ने का निर्णय लिया - [इवेंट boolValue] तर्क है कि जब उस चयनकर्ता भेजा जाता है, तो डीबगर बंद हो जाएगा।

हालांकि, कुछ भी नहीं होता है। ब्रेकपॉइंट सेट करने के बाद ऐप सिर्फ सैनिकों को चालू करता है और बिना किसी रोक के एक ही अपवाद उत्पन्न करता है।

enter image description here

मैं Xcode के साथ LLDB डिबगर उपयोग कर रहा हूँ 4.2

उत्तर

7

किसी चयनकर्ता पर ब्रेकपॉइंट सेट करने से एलएलडीबी को रोक दिया जाता है जब उस चयनकर्ता को निष्पादित किया जाता है, जब इसे भेजा जाता है। आपके मामले में, कोई चयनकर्ता नहीं है "- [इवेंट बूलवेल्यू]", इसलिए यह ब्रेकपॉइंट कभी भी हिट नहीं होगा।

मैं "ऑब्जेक्टिव-सी अपवाद" पर अपवाद ब्रेकपॉइंट सेट करूंगा। यह तब प्रभावित होगा जब "अपरिचित चयनकर्ता भेजा गया" अपवाद फेंक दिया गया है और आप देख सकते हैं कि समस्या कहां होती है।

2

यह मेरे लिए लगता है कि प्रतीकात्मक breakpoints LLDB में सही काम नहीं करते (:

मैं इस प्रकार ब्रेकप्वाइंट को परिभाषित किया है मैं इस लेखन के रूप में एक्सकोड का सबसे हालिया रिलीज संस्करण चला रहा हूं, 4.3.3)।

मैंने addAnimation पर प्रतीकात्मक ब्रेकपॉइंट सेट किया: forKey: एलएलडीबी में, और यह कभी भी हिट नहीं होता है। अगर मैं अपनी परियोजना को जीडीबी में बदलता हूं, तो ब्रेकपॉइंट अपेक्षित काम करता है।

-2

अपरिचित चयनकर्ता कॉल खोजने का सबसे अच्छा तरीका इस चयनकर्ता (श्रेणी के रूप में) बनाना और इसमें ब्रेक पॉइंट डालना है।

3

मैं एक ही जवाब (प्रतीकात्मक breakpoints) के लिए देख रहा था और इस लिंक में मदद मिली: http://www.cocoabuilder.com/archive/cocoa/308967-symbolic-breakpoints.html#308970

आप इस पैटर्न (यह भी Xcode ब्रेकप्वाइंट संपादक में एक प्लेसहोल्डर के रूप में दिया जाता है) का पालन करना होगा:

- [name_of_the_class name_of_the_method:] 

उदाहरण के लिए मैं देखना चाहता है जो अपने बाएं बार आइटम सेट और ओवरराइड करता है है मेरी सेटिंग देख रहा था, मैं -[UINavigationItem setLeftBarButtonItem:]

का इस्तेमाल किया और यह काम किया। या यह एक

-[UINavigationController pushViewController:animated:]

2

मैं इस प्रतीक -[NSObject doesNotRecognizeSelector:]enter image description here

जो हमें मदद मिलेगी स्थितियों में, जहां एक चयनकर्ता गलत वस्तु के खिलाफ लागू किया जा रहा है पर कब्जा करने के साथ एक प्रतीकात्मक ब्रेकपाइंट सेट होगा।

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

  • कोई संबंधित समस्या नहीं^_^