2012-09-30 89 views

回答

8

你可以做到這一點Valgrind的最後一個版本(3.8.1):

啓動可執行激活在啓動gdbserver的:

valgrind --vgdb-error=0 ....<your program> 

然後在另一個窗口,連接gdb來Valgrind的(遵循Valgrind給出的指示 )。 然後把一個斷點在相關位置(例如,在主要的端部) 和使用gdb

continue 

命令直到到達斷點。 然後做從廣發行檢漏:

monitor leak_check full reachable any 

然後列出相關的損失紀錄NR的可達塊地址(ES)

monitor block_list <loss_record_nr> 

然後可以使用gdb的功能來檢查內存的地址(es)。 另請注意,如果您正在搜索誰保留了指向此內存的指針,則可能有趣的命令爲「who_points_at」 。

+1

我得到「'valgrind:錯誤的選項:--vgdb-error = 0」。 (valgrind-3.6.1) – panzi

+0

@panzi我認爲這隻適用於3.8.1以上的ppw提到。我用valgrind-3.11.0試了一下,沒有問題。 – Nubcake