2011-09-20 17 views
8

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

हालांकि मुझे लगता है कि यह केवल नए (या मॉलोक) के साथ आवंटित स्मृति पा सकता है जिसे जारी नहीं किया गया था और अब और उपलब्ध नहीं है। इसके अलावा मैंने सीखा कि पुरानी रिलीज (10.5 और 10.6) पर काम करना चाहिए, लेकिन मैं शेर (10.7) का उपयोग करता हूं।

+0

जैसा ऊपर लिखा गया है (अभी तक) शेर (10.7) के साथ काम नहीं करता है। – Nils

+1

@ मेट: शेर (10.7) अभी तक समर्थित नहीं है क्योंकि ओपी ने इंगित किया है, वे जून से ही काम कर रहे हैं, लेकिन यह इतना आसान प्रतीत नहीं होता है: https://bugs.kde.org/show_bug.cgi?id= 275168 – Matthieu

+0

अपने लिंक @Matthieu से, ऐसा लगता है कि लोगों ने इसे काम करने के लिए प्राप्त किया है। –

उत्तर

4

मैं XCode डेवलपर उपकरण MallocDebug का प्रयोग करेंगे। आप इस

वैकल्पिक रूप से अपने /डेवलपर फ़ोल्डर में XCode के साथ स्थापित किया जाना चाहिए था, आप gdb में अपने आवेदन चलाने के लिए और

% gdb <program name> 
(gdb) set env MallocStackLoggingNoCompact 1 
(gdb) run 

फिर चलाकर देशी malloc लॉगिंग उपयोग कर सकते हैं, आप कर सकते हैं स्पष्ट रिसाव

+0

ने इसे ऐसे मामले में परीक्षण किया जहां मैंने गलती से उन्हें जोड़ने के बजाय सरणी पहुंच में 2 वर्रों को गुणा किया। w/o MallocStackLoggingNo कॉम्पैक्ट बीटी आउटपुट बेकार है, लेकिन सेट करने के बाद यह मुझे सटीक रेखा बताता है! संकेत के लिए Thx! – Nils

+0

हालांकि मुझे 10.7 में मॉलोकडेबग नहीं मिला। शार्क चला गया है .. :( – Nils

+0

ऐसा लगता है कि मॉलोकडेबग को 'इंस्ट्रूमेंट्स' एप्लिकेशन में 'लीक्स' उपकरण द्वारा प्रतिस्थापित किया गया है। – Seth

8

वालग्रिंड 3.7.0 (5 वें नवंबर 2011) सु के लिए /usr/bin/leaks और /usr/bin/malloc_history का उपयोग करें पोर्ट शेर। http://valgrind.org

+0

यह डाउनलोड, निर्माण और इसका उपयोग करने के लिए भी सीधे है। –

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