2012-03-06 11 views
44

क्या कोई यह बता सकता है कि एक्सकोड में ये विकल्प क्या करते हैं?एक्सकोड - स्क्रिबल, गार्ड किनारों और गार्ड मैलोक

  • सक्षम घसीटना
  • सक्षम गार्ड किनारों
  • गार्ड Malloc सक्षम

कि वे क्या हैं और वे क्या करते हैं और कैसे उपयोगी वे डिबगिंग/परीक्षण के लिए हो सकता है?

धन्यवाद।

उत्तर

42

documentation से।

  • स्क्रिबल सक्षम करें। 0xAA के साथ आवंटित स्मृति भरें और 0x55 के साथ हटाए गए मेमोरी को भरें।
  • गार्ड एज सक्षम करें। बड़े आवंटन से पहले और बाद में गार्ड पेज जोड़ें।
  • गार्ड मॉलोक सक्षम करें। बफर ओवररन्स और उपयोग के बाद-मुक्त जैसी सामान्य मेमोरी समस्याओं को पकड़ने के लिए libgmalloc का उपयोग करें।

स्क्रिबल इसे स्पष्ट कर देगा कि आप मेमोरी ब्लॉक में होने वाले किसी भी डेटा को ओवरराइट करके इसे मुक्त करने के बाद मेमोरी ब्लॉक का उपयोग कर रहे हैं।
गार्ड किनारों और गार्ड मॉलोक आपको मेमोरी ओवर्रंस खोजने में मदद करेंगे और (कुछ हद तक) मेमोरी ब्लॉकों की सुरक्षा के लिए मेमोरी ब्लॉक को पढ़ने और लिखने के लिए मेमोरी ब्लॉक को सुरक्षित और लिखने में मदद करेंगे।

+0

मैं इस पूछना क्योंकि कभी कभी मैं में दुर्घटनाओं है मेरे ऐप जिन्हें मैं डिबग करने का प्रयास कर रहा हूं, और एक्सकोड 4 अंक "int retVal = UIApplicationMain (argc, argv, nil, @" AppDelegate "); " त्रुटि के स्रोत के रूप में। इसलिए मैं इसे सही त्रुटि की ओर इंगित करने के तरीकों को खोजने का प्रयास कर रहा था। – SpaceDog

+0

@DigitalRobot यदि वे 100% "सुरक्षा" नहीं देते हैं, भले ही यह एक स्मृति त्रुटि है, तो ऊपर दिए गए विकल्पों में से कोई भी सक्षम होने पर यह संभव होगा कि आपका प्रोग्राम वास्तविक त्रुटि के करीब क्रैश हो जाए। –

+0

धन्यवाद। वही है जिसकी मैं तलाश कर रहा था!!! – SpaceDog

3

ऊपर "दस्तावेज़" लिंक सामान्य रूप से एक्सकोड है, लेकिन अधिक विशेष रूप से RN-MallocOptions इन (और अन्य) विकल्पों को विस्तार से कवर करता है।

जिम कुबिसक Debugging Smashed Memory in Obj-C में एक अच्छा उदाहरण दिखाता है, जिसमें महत्वपूर्ण "मैं इनकोड में इन्हें कैसे सक्षम करूं?" प्रश्न:

'योजना संपादित करें' विंडो खोलें और डायग्नोस्टिक टैब पर नेविगेट करें। आप "स्क्रिबल सक्षम करें" और "मॉलोक स्टैक" चालू करना चाहते हैं। ... संक्षेप में, "सक्षम स्क्रिबल" आवंटक को 0xAA को नई आवंटित स्मृति में लिखने और 0x55 को विलुप्त स्मृति में लिखने का कारण बन जाएगा। "मॉलोक स्टैक" आपके मेमोरी के आवंटन और मुक्त इतिहास को लॉग करेगा।

आप इस दूर पढ़ा है, तो आप शायद एप्पल के तकनीकी नोट्स में दिलचस्पी होगी:

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