Xcode में NSZombie कैसे इनेबल करें?


302

मेरे पास एक ऐप है जो बिना किसी त्रुटि के त्रुटि के साथ दुर्घटनाग्रस्त हो रहा है। अगर मैं डिबग करता हूं तो मैं क्या देख रहा हूं, इसका हिस्सा देख सकता हूं, लेकिन यह पता नहीं लगा सकता कि कौन सी वस्तु "ज़ोंबी-आईएनजी" है।

क्या किसी को पता है कि Xcode 4 में NSZombie कैसे सक्षम करें?

जवाबों:


440

पर्यावरण चर अब "योजना" का हिस्सा हैं।

योजना को संपादित करने और लाश को चालू करने के लिए:

  • "उत्पाद" मेनू में, "योजना संपादित करें" चुनें।

  • बाएं पैनल में "रन Foo.app" चरण पर जाएं, और दाईं ओर "तर्क" टैब।

  • जोड़ें NSZombieEnabled"पर्यावरण चर" अनुभाग पर और करने के लिए मान सेट YES, आप Xcode 3 में कर सकता।


Xcode 4.1 और इसके बाद के संस्करण में , "रन ऑब्जेक्ट" स्टेज पर "ज़ोंबी ऑब्जेक्ट्स सक्षम करें" के "डायग्नोस्टिक्स" टैब पर एक चेकबॉक्स भी है।


Xcode 6.4 के साथ:

स्क्रीनशॉट


5
डिवाइस पर डीललॉकेटेड ऑब्जेक्ट के कॉल पर नहीं टूटता, ऐसा करने का कोई तरीका?
जजट्रा

95
यह 4.2 में फिर से बदल गया, नीचे मेरा जवाब देखें। उत्पाद पर
जाएँ-

Xcode में, शीर्ष पर स्थित हेल्प मेनू में (दाईं ओर सबसे आखिरी में) "एडिट स्कीम" खोजें, यह आपको किसी भी संस्करण में हर बार सही दिशा में इंगित करेगा।
अनोम

अगर हम इस NSZombieEnabled सुविधा को अपने ऐप में सक्षम करते हैं तो क्या हम स्टोर करने के लिए ऐप जारी करेंगे? क्योंकि मैंने एक पोस्ट यह कहते हुए देखी कि जब हम इस सुविधा को सक्षम करते हैं तो स्टोर करने के लिए रिलीज़ करने के लिए इसका अच्छा अभ्यास नहीं है।
शतेश संकरा

2
बाद में आने वाले बदमाशों के लिए, Xcode 6.1 में आप मेनू> उत्पाद> स्कीम-एडिट स्कीम> डायग्नोस्टिक्स टैब> चेकबॉक्स ज़ोंबी ऑब्जेक्ट्स को सक्षम करें
जोशुआ डांस

146

मुझे EXC_BAD_ACCESS के समस्या निवारण में समान समस्या का सामना करना पड़ा और Xcode 4.2 (नवीनतम संस्करण जो iOS5 SDK के साथ आता है) के साथ सेटिंग को खोजने के लिए कठिन समय था। Apple चीजों को आगे बढ़ाता है और सेटिंग्स अब वे नहीं हैं जहां वे हुआ करते थे।

सौभाग्य से, मैंने इसे पाया है और यह केवल सिम्युलेटर नहीं, बल्कि डिवाइस के लिए काम करता है। आपको Xcode में उत्पाद मेनू खोलने की जरूरत है, संपादन योजना का चयन करें और फिर डायग्नोस्टिक्स टैब चुनें। वहां आपके पास "सक्षम ज़ोंबी ऑब्जेक्ट्स" हैं। एक बार चयनित और डिबगर में चलाने के बाद आप डबल जारी की गई वस्तु की ओर इशारा करेंगे! का आनंद लें!

संक्षेप में

Product->Edit Scheme->Diagnostics-> Click Enable Zombie Objects

2
Xcode में, शीर्ष पर स्थित हेल्प मेनू में (दाईं ओर सबसे आखिरी में) "एडिट स्कीम" खोजें, यह आपको किसी भी संस्करण में हर बार सही दिशा में इंगित करेगा।
अनोम

43

उत्पाद> प्रोफ़ाइल इंस्ट्रूमेंट्स लॉन्च करेगा और फिर आपको "लाश" नाम का एक "ट्रेस टेम्पलेट" होना चाहिए। हालाँकि यह ट्रेस टेम्प्लेट केवल तभी उपलब्ध होता है यदि वर्तमान बिल्ड डेस्टिनेशन सिम्युलेटर है - यह उपलब्ध नहीं होगा यदि आपके पास आपके आईओएस डिवाइस पर गंतव्य सेट है।

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


13
"हालांकि यह ट्रेस टेम्प्लेट केवल तभी उपलब्ध होता है जब वर्तमान बिल्ड डेस्टिनेशन सिम्युलेटर हो"। धन्यवाद!
अजह 158

धन्यवाद, यही मैं ढूंढ रहा था!
क्लिफ रिबोडो

Xcode में, शीर्ष पर स्थित हेल्प मेनू में (दाईं ओर सबसे आखिरी में) "एडिट स्कीम" खोजें, यह आपको किसी भी संस्करण में हर बार सही दिशा में इंगित करेगा।
अनोम

25

यह आपके निष्पादन योग्य पर एक पर्यावरण चर स्थापित करने का एक साधारण मामला है (NSZombieEnabled = YES), और फिर अपने ऐप को सामान्य रूप में चला / डिबग कर रहा है। यदि आप एक ज़ोंबी संदेश देते हैं, तो आपका ऐप क्रैश हो जाएगा / डीबगर और NSLogआपके लिए एक संदेश तोड़ देगा ।

अधिक जानकारी के लिए, यह कोकोआ पृष्ठ देखें: http://www.cocoadev.com/index.pl?NSZombieEnabled

साथ ही, 10.6 और Xcode और इंस्ट्रूमेंट्स के अगले संस्करणों के रिलीज के साथ यह प्रक्रिया बहुत आसान हो जाएगी। बस केह रहा हू'। =)


पूरी तरह से सहमत। नई लाश उपकरण बहुत अच्छा है।
क्विन टेलर

22

उत्पाद> प्रोफ़ाइल इंस्ट्रूमेंट को पॉप अप करेगा। पैनल से लाश का चयन करें और पागल हो जाओ।


5
@jluebbert मैं कहूंगा कि मैं कठिन कोशिश करूंगा क्योंकि मैं निश्चित रूप से इसे देख रहा हूं, Xcode 4.02 चल रहा है
गैराजट्रोइस

16

उत्पाद पर जाएं - स्कीम - एडिट स्कीम - आर्ग्युमेंट्स - एनवायरमेंट वेरिएबल्स में NSZombieEnabled = YES सेट करें

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें


12

एक्सकोड 4.2 में

गोटो, उत्पाद -> संपादन योजना -> क्लिक करें रन yourappname.app -> डायग्नोस्टिक्स -> ज़ोंबी ऑब्जेक्ट को सक्षम करें।



6

Xcode 3.2.5 और स्नो लेपर्ड (Mac OS X 10.6) के रूप में, आप अपना कोड लाश इंस्ट्रूमेंट के माध्यम से चला सकते हैं Run > Run with Performance Tool > Zombies:। यह आपको विशेष वस्तुओं को देखने की अनुमति देता है और समय पर उनकी गणना को बनाए रखता है।


1
मैं लाश विकल्प देख सकता हूं लेकिन यह धूसर हो गया है। क्या आप जानते हैं कि यह कैसे सक्षम है?
राहुल व्यास

@RahulVyas, मैंने पहले कभी नहीं देखा, लेकिन क्या आपके पास कचरा संग्रह चालू है? मैं लाश को उस संदर्भ में समझ में नहीं आ रहा था
Dov

मैंने सेटिंग्स में कचरा संग्रह को चालू कर दिया है, यह समर्थित -fobjc-gc] दिखाता है लेकिन फिर भी वह विकल्प अक्षम है। साधन श्रेणी में केवल अंतिम 5 विकल्प ही सक्षम हैं। कोई अन्य विचार? या मुझ से कुछ गलत हो रहा है?
राहुल व्यास

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

4

Xcode 4.5.2 गोटो प्रोडक्ट में -> एडिट स्कीम -> और डायग्नोस्टिक्स टैब के तहत ऑब्जेक्टिव C और ज़ोंबी ऑब्जेक्ट्स को सक्षम करने के लिए चेक बॉक्स को चेक करें और OK पर क्लिक करें।


3

ज़ोंबी लॉगिंग को सक्षम करने के लिए अपने Xcode प्रोजेक्ट के निष्पादन समूह में निष्पादन योग्य को डबल-क्लिक करें। इस बिंदु पर आर्ग्युमेंट्स टैब पर क्लिक करें और Variables to be set in the environment:सेक्शन में, एक वैरिएबल बनायें NSZombieEnabledऔर इसके मान को सेट करें YES


3

XCode 4.0 में: इंस्ट्रूमेंट्स में NSZombie का पता लगाने के लिए, सिम्युलेटर को अपने लक्ष्य के रूप में चुनें (डिवाइस पर NSZomboe का पता नहीं लगा सकते हैं)। इंस्ट्रूमेंट्स (CMD + I) चलाएं और "लाश" ट्रेस टेम्पलेट चुनें। का आनंद लें।


2

अपने निष्पादन योग्य की प्राथमिकताओं में पर्यावरण चर जोड़ें NSZombieEnabledऔर मूल्य निर्धारित करें YES


2

उर XCODE (4.3) प्ले बटन के आगे :) (रन)

चयन करें: योजना संपादित करें

योजना प्रबंधन विंडो खुल जाएगी

तर्क टैब पर क्लिक करें

आपको देखना चाहिए: 1- लॉन्च 2- पर्यावरण चर पर तर्क पारित हुए

(2- पर्यावरण चर) जगह के अंदर नाम: NSZombieEnabled
मूल्य: YES

और इसका किया…।


1

NSZombieEnabled का उपयोग BAD_ACCESS डिबगिंग के लिए किया जाता है,

Xcode की स्कीम शीट से NSZiliEnabled पर्यावरण चर को सक्षम करें।

Click on Product⇒Edit Scheme to open the sheet and set the Enable Zombie Objects check box

यह वीडियो आपको यह देखने में मदद करेगा कि मैं क्या कहना चाह रहा हूं।


@kleopatra धन्यवाद ने उपयुक्त सेटिंग के साथ मेरे उत्तर अपडेट किए
user2554822
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.