Valgrind के आउटपुट को किसी फ़ाइल में रीडायरेक्ट कैसे करें?


147

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

 valgrind a.out | test

तथा

 valgrind a.out > test

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

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


2
क्या आपने स्टाउट और स्टडर दोनों को पुनर्निर्देशित करने की कोशिश की है? valgrind a.out &> file
सूर्यास्त

जवाबों:


415
valgrind --log-file="filename"

1
यह सिर्फ stderr को बचाता है, क्या stderr और stdout दोनों को एक ही फाइल में एक ही क्रम में सहेजना संभव है जैसा कि टर्मिनल में लिखा गया है (यानी वेलग्रिंड द्वारा रिपोर्ट किए गए परीक्षण कार्यक्रम और त्रुटि के आउटपुट के बीच सामंजस्य रखने के लिए)?
प्रकोप हापाला

78

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

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

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


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

10
@ दिनेश: मेरा सुझाव है कि gnu.org/software/bash/manual/bashref.html#Redirections , जो रीडायरेक्ट करने के लिए विचित्र बैश सिंटैक्स का वर्णन करता है!
ओलिवर चार्ल्सवर्थ

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

मेमोरी लीक को डिबग करने का यह भी एक बेहतरीन जवाब है!
फ्री यूआरएल

10

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

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