कैसे "डीबग करने के लिए malloc_error_break में एक ब्रेकप्वाइंट सेट करें"


126

मैं अपने आवेदन दुर्घटनाग्रस्त बिना इस तरह के बहुत सारे कंसोल आउटपुट प्राप्त कर रहा हूं:

Malloc: * ऑब्जेक्ट के लिए त्रुटि 0xc6a3970: सूचक को मुक्त किया जा रहा है आवंटित नहीं किया गया था * डीबग करने के लिए malloc_error_break में एक विराम बिंदु सेट करें

मैं कैसे पता लगा सकता हूं कि कौन सी वस्तु या चर प्रभावित है?

मैंने इस तरह एक प्रतीकात्मक विराम बिंदु स्थापित करने की कोशिश की, लेकिन यह कभी नहीं रुकता:

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


1
मैं अक्षम सफारी निरीक्षण द्वारा इस मुद्दे को हल करता हूं। stackoverflow.com/a/43885754/6521116
क्रिस रूफ

इसका एक कारण एक फ़ंक्शन / विधि है जिसे किसी ऑब्जेक्ट को वापस करना है और यह फ़ंक्शन के अंत तक पहुंचता है और कुछ भी वापस नहीं करता है।
Xofo

जवाबों:


136

ब्रेकपॉइंट नेविगेटर (दृश्य-> नेविगेटर-> शो ब्रेकपॉइंट नेविगेटर या ⌘7) को खोलकर, निचले बाएं कोने में प्लस बटन पर क्लिक करके और "सिम्बोलिक ब्रेकपॉइंट" का चयन करके, मॉलोक_एयर_ब्रेक पर एक ब्रेकपॉइंट सेट करें। आने वाले पॉपअप malloc_error_breakमें, प्रतीक फ़ील्ड में दर्ज करें, फिर पूर्ण क्लिक करें।

संपादित करें: ओपनफ्रॉग ने एक स्क्रीनशॉट जोड़ा और संकेत दिया कि मैंने अपना उत्तर पोस्ट करने के बाद सफलता के बिना इन चरणों की कोशिश की है । उस संपादन के साथ, मुझे यकीन नहीं है कि क्या कहना है। मैंने यह नहीं देखा कि मैं स्वयं काम करने में असफल हूं, और वास्तव में मैं हमेशा malloc_error_break सेट पर एक ब्रेकपॉइंट रखता हूं।


2
यह मेरे लिए (मॉड्यूल के बिना) काम करता था। मेरे लिए समस्या का कारण यह था कि मेरे पास UIImageएक फ़ाइल का समर्थन था , और मैं एक अलग छवि के साथ फ़ाइल को अधिलेखित कर रहा था। जब मैंने UIImagePNGRepresentationमूल छवि पर कॉल किया था तो यह त्रुटि आई थी (न कि जब फ़ाइल वास्तव में अधिलेखित की गई थी)।
रॉबर्ट

मुझे ⌘7बार के निचले-बाएँ कोने में एक प्लस बटन नहीं मिल रहा है ... शायद आपका मतलब है ⌘8?
स्कॉट्टीब्लाड्स

@ScottyBlades का अनुमान है कि शॉर्टकट बदल गया है। मैंने यह उत्तर 8 साल और 7 प्रमुख एक्सकोड संस्करण पहले लिखा था ...
एंड्रयू मैडसेन

@AndrewMadsen कोई चिंता नहीं है, अगर यह संपादित करने के लिए समझ में आता है।
स्कूटीब्लैड्स

46

अपने स्क्रीनशॉट में, आपने कोई मॉड्यूल निर्दिष्ट नहीं किया: "libsystem_c.dylib" सेट करने का प्रयास करें

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

मैंने ऐसा किया, और यह काम करता है: ब्रेकपॉइंट यहां रुक जाता है (हालांकि स्टैकट्रेस अक्सर कुछ अस्पष्ट सिस्टम लिब से बढ़ जाता है ...)


7
आईओएस में मॉड्यूल का नाम अलग है, ऐसा लगता है libsystem_malloc.dylib:। किसी मॉड्यूल को निर्दिष्ट किए बिना ब्रेकपॉइंट मेरे लिए काम करता है।
नेस्टर

6

मुझे Xcode के साथ भी यही समस्या थी। मैंने आपके द्वारा दिए गए चरणों का पालन किया और यह काम नहीं किया। मैं पागल हो गया क्योंकि हर मंच पर मैंने देखा, इस समस्या के सभी सुराग आपके द्वारा दिए गए हैं। मैंने आखिरकार देखा कि मैंने malloc_error_break के बाद एक स्थान रखा, मैंने इसे दबा दिया और अब यह काम करता है। एक गूंगा समस्या लेकिन अगर समाधान काम नहीं करता है, तो सुनिश्चित करें कि आपने malloc_error_break से पहले और बाद में कोई स्थान नहीं रखा है।

आशा है यह संदेश मदद करेगा ।।


4

मैंने अनुमति दी थी मुझे कुछ फ़ोल्डर्स (विशेष रूप से / usr / बिन /) में नहीं लिखना चाहिए, और इससे समस्या पैदा हुई। मैंने इसे डिस्क उपयोगिता खोलकर और मैकिन्टोश एचडी डिस्क पर 'रिपेयर डिस्क अनुमतियाँ' चलाकर ठीक किया।


धन्यवाद, यह मेरी खराब मशीन थी।
मैट फ्लेचर

2

मैं इसे करीबी सफारी निरीक्षक द्वारा हल करता हूं। मेरी पोस्ट का संदर्भ लें । मुझे कभी-कभी ध्वनि भी मिली जब मैं परीक्षण के लिए अपना ऐप चलाता हूं, तो मैं ऑटो इंस्पेक्टर के साथ सफारी खोलता हूं, इसके बाद, मैं अपने ऐप में कुछ कार्रवाई करता हूं फिर यह मुद्दा शुरू हो गया।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.