2008-11-19 15 views
21

मेरे पास एक प्रक्रिया x है कि मैं valgrind के साथ लीक की जांच करना चाहता हूं। समस्या यह है कि xy द्वारा चलाया गया है, और y बदले में z द्वारा चलाया जाता है। मैं x स्टैंडअलोन नहीं चल सकता क्योंकि y और z सेटअप इस तरह के वातावरण चर, कमांड लाइन स्विच, फ़ाइलों द्वारा x आदिमैं फोर्कड प्रक्रियाओं को याद करने के लिए valgrind कैसे कहूं?

  1. की जरूरत के रूप में x के लिए पर्यावरण, वहाँ किसी भी तरह से मैं z पर चलने के लिए valgrind बता सकते है लेकिन किसी भी कांटे का पालन करने के लिए यह उन्हें पाता है और उन्हें भी रिपोर्ट करता है?
  2. क्या कोई तरीका है कि मैं किसी भी फोरक्स का पालन करने के लिए valgrind बता सकता हूं लेकिन केवल x नाम की प्रक्रिया पर रिपोर्ट कर सकता हूं?
  3. क्या कोई तरीका है कि मैं valgrind को पहले से चलने वाली प्रक्रिया से जोड़ने के लिए बता सकता हूं, जिस तरह से मैं जीडीबी के साथ कर सकता हूं?

मुझे नहीं पता कि यह मायने रखता है, लेकिन मैं SuSE64 linux और valgrind-2.4.0 के तहत चल रहा हूं।

धन्यवाद!

उत्तर

28
  1. --trace-children=yes विकल्प दिए जाने पर वालग्रिंड फोर्क प्रक्रियाओं का पालन करता है।
  2. आप उपयुक्त फ़िल्टर का उपयोग करके इसे प्राप्त करने में सक्षम होना चाहिए।
  3. नहीं। एलडी_PRELOAD का उपयोग कर मॉड्यूल लोडिंग कोड में वालग्रिंड हुक, इसलिए चलने की प्रक्रिया को जोड़ना संभव नहीं है।
+6

Valgrind * इस्तेमाल किया * LD_PRELOAD का उपयोग करने के लिए, लेकिन वर्तमान संस्करणों में ऐसा नहीं करता है। आपका उत्तर 3. अभी भी सही है, लेकिन कारण से LD_PRELOAD के साथ कुछ लेना देना नहीं है। –

+0

दिलचस्प। मुझे सही करने के लिए धन्यवाद। – JesperE

+1

ट्रेस-चाइल्डन का उपयोग करते समय, आपको भी निर्दिष्ट करने की आवश्यकता नहीं है - अन्यथा यह कांटे की कांटे की निगरानी रोक देगा? – DEzra

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