Bir programda valgrind --leak-check=yes
çalıştırdığımda, birkaç baytlık kayıp bellek bildirildi. Bu belleğin içeriğini görüntülemek mümkün mü (yani içinde saklanan verileri)?Valgrind tarafından bildirilen kayıp belleğin içeriğinin dökülmesi
6
A
cevap
8
valgrind son sürümü (3.8.1) ile yapabilirsiniz:
başlangıçta gdbserver aktive senin yürütülebilir başlatın: başka bir pencerede Sonra
valgrind --vgdb-error=0 ....<your program>
, Valgrind bir gdb bağlamak (Valgrind tarafından verilen işaretlerini takiben). Sonra (örneğin ana sonunda) alakalı bir yerde bir kesme noktası koymak ve kesme noktası ulaşıldığında kadar GDB
continue
komutunu kullanın. Daha sonra belleği incelemek için gdb özellikleri kullanabilirsiniz
monitor block_list <loss_record_nr>
monitor leak_check full reachable any
Ardından ilgili kayıp rekor nr ulaşılabilir blokların adres (ler) listelemek: Sonra gdb bir kaçak arama yapmak Verilen adres (ler). Ayrıca, bu anahtara bir işaretçi tutmuş olan birini arıyorsanız, potansiyel olarak ilginç olan "who_points_at" komutunu da not edin.
"Valgrind: Bad option: --vgdb-error = 0'" alıyorum. (valgrind-3.6.1) – panzi
@panzi Sanırım bu sadece 3.8.1'den yukarıda belirtilen ppw olarak çalışıyor. Bunu valgrind-3.11.0 ile denedim ve problem olmadı. – Nubcake