2013-10-08 1 views
15

मैं बैश स्क्रिप्ट में वालग्रिंड चला रहा हूं, और वाल्ग्रिंड के आउटपुट को फ़ाइल में निर्देशित कर रहा हूं। इस तरह:स्क्रिप्ट में कैसे प्राप्त करें कि क्या वालिग्रिंड मेमोरी लीक पाई गई है?

valgrind --leak-check=full --show-reachable=yes --xml=yes --xml-file=unit_tests_valgrind.out.xml ./unit_tests_runner 

RET_VALUE=$?, valgrind से नहीं कार्यक्रम (ऊपर unit_tests_runner) के रिटर्न मान कर दिया जा रहा है। और यह जांचने का एकमात्र तरीका है कि वाल्ग्रिंड को स्मृति समस्याएं मिली हैं या नहीं, लॉग खोलना है।

क्या कोई स्क्रिप्ट में जांचने का कोई तरीका है कि स्मृति समस्याएं हैं या नहीं? यदि हां, तो कैसे?

उत्तर

19

आप --error-exitcode विकल्प की तलाश में लग रहे हैं।

चूंकि यह 0 पर डिफ़ॉल्ट है, इसलिए Valgrind से वापसी कोड प्रक्रिया के समान है। इसे इसके बजाय एक गैर-शून्य मान पर सेट करें।

Valgrind core manual से:

--error-exitcode=<number> [default: 0]

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

+0

हाँ, यही वह है जिसे मैं ढूंढ रहा था। धन्यवाद –

+0

क्या यह मुझे है या '' से -1 सेट करना मेरे लिए काम नहीं करता है, ऐसा लगता है कि यह 0 से बड़ा होना चाहिए? अपेक्षित व्यवहार करने के लिए – chutsu

+4

'--leak-check = full' या' yes' महत्वपूर्ण है (आपके उपयोग के मामले के आधार पर)। इसके बिना, रिसाव त्रुटियों को दबाया जाएगा और बाहर निकलने के कोड में रिपोर्ट नहीं की जाएगी (वालग्रिंड 3.10 भी उन्हें दबाने के रूप में रिपोर्ट नहीं करता है)। – jtpereyda

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