2012-09-30 34 views
6

द्वारा खोए गए खोए गए स्मृति की डंपिंग सामग्री जब मैं किसी प्रोग्राम पर valgrind --leak-check=yes चलाता हूं, तो खोए गए मेमोरी के कुछ बाइट्स की सूचना दी जाती है। क्या इस स्मृति की सामग्री को देखना संभव है (यानी उसमें संग्रहीत डेटा डंप करें)?Valgrind

उत्तर

8

आपको लगता है कि वेलग्रिंड के पिछले संस्करण (3.8.1) के साथ कर सकते हैं:

स्टार्टअप पर gdbserver को सक्रिय करने के लिए अपने निष्पादन

शुरू करें:

valgrind --vgdb-error=0 ....<your program> 
फिर एक और विंडो में

, वेलग्रिंड करने के लिए एक gdb कनेक्ट (Valgrind द्वारा दिए गए संकेतों के बाद )। तब (मुख्य के अंत में जैसे) एक प्रासंगिक स्थान पर एक ब्रेकपाइंट रख दिया और gdb

continue 

आदेश का उपयोग करें जब तक ब्रेकपाइंट तक पहुँच जाता है।

monitor leak_check full reachable any 

फिर प्रासंगिक हार का रिकॉर्ड एन.आर. की पहुंच योग्य ब्लॉक के पता (ते) सूची

monitor block_list <loss_record_nr> 

फिर आप gdb सुविधाओं का उपयोग कर सकते हैं स्मृति की जांच करने के: फिर gdb से रिसाव खोज करते हैं दिए गए पते (एस) के। संभावित रूप से दिलचस्प कमांड "who_points_at" पर ध्यान दें यदि आप यह खोज रहे हैं कि इस स्मृति में पॉइंटर किसने रखा है।

+1

मुझे "' valgrind: खराब विकल्प: --vgdb-error = 0' "मिलता है। (valgrind-3.6.1) – panzi

+0

@panzi मुझे लगता है कि यह केवल 3.8.1 से ऊपर काम करता है क्योंकि पीपीडब्ल्यू का उल्लेख है। मैंने इसे valgrind-3.11.0 के साथ करने की कोशिश की और कोई समस्या नहीं थी। – Nubcake