2011-12-02 13 views
108

Valgrind टूल के साथ काम करते समय, मुझे valgrind टूल द्वारा उत्पादित विवरण लॉग इन करने की आवश्यकता है। मैं इसे कैसे पूरा कर सकता हूं? मैं कुछ ऐसा करने की कोशिश की,Valgrind के आउटपुट को फ़ाइल में रीडायरेक्ट कैसे करें?

valgrind a.out | test 

और

valgrind a.out > test 

यह सिर्फ कार्यक्रम के उत्पादन और नहीं valgrind स्मृति त्रुटि दे दी है, जानकारी लीक। यहां तक ​​कि मुझे इस तरह मिल रहा है अगर कार्यक्रम के लिए कोई उपयोगकर्ता इंटरैक्शन की आवश्यकता नहीं है (यानी इनपुट दे रहा है)। यदि कार्यक्रम को उपयोगकर्ता इनपुट की आवश्यकता है तो भी वह चीज़ काम नहीं करेगी।

मैं यह कैसे कर सकता हूं?

+1

क्या आपने स्टउट और स्टेडर दोनों को रीडायरेक्ट करने का प्रयास किया है? 'valgrind a.out &> फ़ाइल' – sidyll

उत्तर

335
valgrind --log-file="filename" 
+0

यह बिल्कुल सही है! – Yash

+20

यह स्वीकार्य उत्तर होना चाहिए। – SeMeKh

69

डिफ़ॉल्ट रूप से, वालग्रिंड अपने आउटपुट को stderr लिखता है। तो आपको कुछ ऐसा करने की ज़रूरत है:

valgrind a.out > log.txt 2>&1 

वैकल्पिक रूप से, आप Valgrind को कहीं और लिखने के लिए कह सकते हैं; http://valgrind.org/docs/manual/manual-core.html#manual-core.comment देखें (लेकिन मैंने कभी कोशिश नहीं की है)।

+2

बहुत बहुत धन्यवाद :)। इसने काम कर दिया। क्या आप कृपया मुझे बता सकते हैं कि "2> और 1" के साथ क्या है? – Dinesh

+7

@ दिनेश: मैं सुझाव देता हूं कि http://www.gnu.org/software/bash/manual/bashref.html#Redirections, जो कि पुनर्निर्देशन करने के लिए विचित्र बैश वाक्यविन्यास का वर्णन करता है! –

+14

नोट: यह सुझाव एक ही लॉग फ़ाइल में 'a.out' आउटपुट भी भेजेगा। यदि आप valgind के आउटपुट को लॉगफाइल * के बिना * 'a.out' में सहेजना चाहते हैं, तो आपको लेक्स द्वारा सुझाए गए '--log-file' विकल्प का उपयोग करना चाहिए। – edam

6

यदि आप बस अपने लॉग को कम से कम पढ़ना चाहते हैं तो आप विकल्प --log-fd भी सेट कर सकते हैं। उदाहरण के लिए:

valgrind --log-fd=1 ls | less 
+0

धन्यवाद, यह मेरी हार्ड डिस्क को बचाया! –

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

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