2013-08-09 5 views
12

कहें कि मेरे पास एक वैरिएबल है, self.position, जब भी यह अपना मूल्य बदलता है तो मुझे एक्सकोड को तोड़ने के लिए कैसे मिलता है (कई विधियां इसे बदल सकती हैं)।कक्षा में एक आवृत्ति परिवर्तक का मूल्य बदल गया है, तो मेरे पास ब्रेकपॉइंट कैसे ट्रिगर हो सकता है?

+1

यदि 'self.position' एक संपत्ति है, तो एक विधि जोड़ें' - (शून्य) सेटपोजिशन: (CGPoint) pos {_position = pos;} ', और उस सेटर में ब्रेकपॉइंट सेट करें। – dasblinkenlight

+0

@dasblinkenlight क्या यह देखना संभव है कि सेट ने किस लाइन को बुलाया? –

+2

बिल्कुल - कॉल स्टैक खोलें, और मौजूदा फ्रेम से फ्रेम को डबलक्लिक करें। – dasblinkenlight

उत्तर

26

सशर्त तोड़ने के लिए:

  1. Cmd + विकल्प पर क्लिक करें ब्रेकप्वाइंट
  2. तो जैसे एक ब्रेक हालत जोड़ें:

enter image description here

हर अवसर पर तोड़ने के लिए मूल्य बदल गया है:

  1. छोटे सेटटर (और स्वच्छ कोड के लिए गेटर) लागू करें।
  2. सेटर में ब्रेकपॉइंट जोड़ें।

तुम कौन सेटर लागू देखना चाहते हैं - बस (viewDidLoad मेरे उदाहरण में) स्टैक ट्रेस में अगली पंक्ति को देखो:

enter image description here

अद्यतन:

एक दृष्टिकोण जोड़ें

  1. कहीं भी तोड़ ताकि (lldb) प्रॉम्प्ट में watchpoint set variable _position में सांत्वना
  2. प्रकार दिखाता है
  3. अपने नव निर्मित watchpoint करने के लिए सौंपा watchpoint संख्या लिख ​​कर रख लें (आप देखना चाहते हैं एक इवर साथ _position बदलें)।
  4. सशर्त ब्रेकिंग के लिए घड़ी बिंदु को संशोधित करें: watchpoint modify -c "_position < 0.5" 1 जहां उद्धरणों में अभिव्यक्ति की स्थिति है और अंत में संख्या # 3 में देखी गई घड़ी बिंदु संख्या है।
  5. चलना जारी रखें। जब भी मूल्य शर्त से मेल खाता है तो आप तोड़ देंगे और आप समझने के लिए स्टैक फ्रेम का निरीक्षण करने में सक्षम होंगे कि कॉल कहां से आया था।
+1

में वॉचपॉइंट्स के बारे में मेरा संपादित उत्तर देखें XCode में ब्रेकपॉइंट्स के साथ आप अन्य अच्छी चीजें कर सकते हैं। जैसे: http://stavash.wordpress.com/2012/12/22/pimp-your-xcode-add-sound-to-breakpoints/ – Stavash

+0

वाह, यह जानना अच्छा है! आपका उदाहरण एक संपत्ति दिखाने के लिए प्रतीत होता है, यद्यपि। क्या यह इवरों के साथ-साथ संपत्तियों पर भी काम करता है? – dasblinkenlight

+0

ब्रेकपॉइंट के विशिष्ट दायरे में आपके द्वारा लिखे गए अभिव्यक्ति के मूल्यांकन के लिए जो कुछ भी मूल्यांकन किया जाता है, उस पर काम करेगा। – Stavash

5

वैसे करने का यह आसान तरीका घड़ी विंडो में चर पर सही क्लिक करना और घड़ी चर विकल्प का चयन करना है। जब मूल्य बदल जाता है तो एक्सकोड तब आपको सतर्क करेगा।

या आप Key-Value Observing पर एक नज़र डाल सकते हैं।

+0

मुझे भी लगता है कि केवीओ ऐसा करने का विकल्प भी है। – Exploring

2

आप परिवर्तनीय सेट करते समय ब्रेकपॉइंट करने के लिए position के सेटटर को ओवरराइड कर सकते हैं।

+0

क्या यह देखना संभव है कि किस लाइन ने सेटर को बुलाया? –

4

एक प्रतीकात्मक ब्रेकपॉइंट सेट करें। ब्रेकपॉइंट नेविगेटर पर जाएं, + पर क्लिक करें, "सिंबल ब्रेकपॉइंट जोड़ें" पर क्लिक करें। पहले फ़ील्ड में, टाइप करें - [YourSubclassNameHere setPosition:] ", आप जिस भी अन्य सेटिंग को जोड़ना चाहते हैं उसे जोड़ें, फिर संवाद के बाहर क्लिक करें।

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

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