2011-10-28 20 views
7

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

क्या एक ही समय में ब्रेकपॉइंट्स और इंस्ट्रूमेंट्स का उपयोग करना संभव है? यदि नहीं, तो क्या विशिष्ट घटनाएं होने पर इंस्ट्रूमेंट्स टाइमलाइन में मार्कर डालने के लिए कुछ कोड लिखने का एक चालाक तरीका है?

उत्तर

8

मैं आज भी इस मुद्दे में भाग गया, और थोड़ी सी खोज के बाद मुझे यह समाधान मिला। नीचे दिया गया पाठ पोस्ट से उद्धरण है:

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

एनएसएलओजी स्टेटमेंट डीबगर कंसोल में नहीं दिखते हैं। यदि आप अपने एनएसएलॉग स्टेटमेंट देखना चाहते हैं, तो आपको सिस्टम कंसोल एप्लिकेशन (/ एप्लिकेशन/उपयोगिताओं/कंसोल) लोड करना होगा।

संदर्भ: http://www.cimgf.com/2008/04/02/cocoa-tutorial-fixing-memory-leaks-with-instruments/

0

ठीक है, आप डीबगर के नियंत्रण में नहीं चल रहे हैं।

एक दृष्टिकोण कुंजी बिंदुओं पर अलर्ट जोड़ने के लिए हो सकता है, और फिर मैन्युअल रूप से एक हेपशॉट ले सकता है।

या कुछ dtrace जादूगर हो सकता है।