2013-02-25 6 views
11

मैं स्पेगेटी कोड को अनचाहे कर रहा हूं और एक अभ्यास के रूप में मैं अपने लॉन्च से एप्लिकेशन के माध्यम से चल रहा हूं, applicationDidFinishLaunching पर तोड़ रहा हूं और आगे बढ़ रहा हूं।मैं एक्सकोड 4.6 में सभी प्रतीकात्मक कोड को कैसे तोड़ सकता हूं?

जब यह पहली विधि वापस आती है तो मैं असेंबली में तोड़ देता हूं। यह जानना कि कब कदम उठाना है और कब कदम रखना वास्तविक दर्द है। मैं डीबगर को सभी प्रतीकात्मक कोड पर रोकना चाहता हूं (यानी कोड जो मैं एक्सकोड में देख सकता हूं - शायद इसे 'उपयोगकर्ता' कोड कहा जाता है? असल में, गैर फ्रेमवर्क/लाइब्रेरी कोड।), लेकिन मुझे ऐप्पल की आंतरिक विधियों की परवाह नहीं है।

मैं प्रत्येक विधि और फ़ंक्शन की पहली पंक्ति (या प्रत्येक पंक्ति) पर ब्रेकपॉइंट सेट करने के व्यावहारिक समकक्ष की तलाश में हूं, जिसे मैं (या मेरे पूर्ववर्ती) ने लिखा है।

क्या कुछ एलएलडीबी वूडू है जो ऐसा करेंगे?

उत्तर

7

वहाँ MyApp ''/मॉड्यूल कहा जाता है, कार्यों में किसी भी अन्य शेयर की गई लाइब्रेरी (एप्पल चौखटे) के उन लोगों को छोड़कर, अपने उत्पाद मानते हुए 'आपके सभी मॉड्यूल पर breakpoints स्थापित करने का एक आसान तरीका है कि हो सकता है है:

breakpoint set -s MyApp -r . 

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

यदि आप अपनी कक्षाओं को उपसर्ग करना चाहते हैं, तो आप परिणामों को केवल उन कार्यों पर तोड़कर सीमित कर सकते हैं जो उस उपसर्ग के साथ कक्षाओं का हिस्सा हैं। मान लें कि आपका उपसर्ग 'एमए' है, आप कुछ ऐसा कर सकते हैं:

breakpoint set -s MyApp -r ^[^A-Za-z]*MA 

जो आपके अधिकांश कोड को कवर करना चाहिए।

+0

उत्कृष्ट उत्तर, कृपया धन्यवाद। दूसरों के संदर्भ में, साझा की गई लाइब्रेरी में '-s' सीमाओं को सीमित करता है, और' -r' एक रेगेक्स को इंगित करता है कि कौन से फ़ंक्शंस को तोड़ना है। – Swizzlr

+0

संश्लेषित संपत्ति एक्सेसर्स को अनदेखा करने का कोई तरीका है तो प्रमुख बोनस अंक। – Swizzlr

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