When I run valgrind --leak-check=yes
on a program, a few bytes of lost memory are reported. Is it possible to view the contents of this memory (i.e. dump the data that is stored in it)?
Asked
Active
Viewed 8,472 times
9

ondra.cifka
- 755
- 1
- 9
- 17
1 Answers
13
You can do that with the last version of Valgrind (3.8.1):
Start your executable activating the gdbserver at startup:
valgrind --vgdb-error=0 ....<your program>
Then in another window, connect a gdb to Valgrind (following the indications given by Valgrind). Then put a breakpoint at a relevant place (e.g. at the end of main) and use the gdb
continue
command till the breakpoint is reached. Then do a leak search from gdb:
monitor leak_check full reachable any
Then list the address(es) of the reachable blocks of the relevant loss record nr
monitor block_list <loss_record_nr>
You can then use gdb features to examine the memory of the given address(es). Note also the potentially interesting command "who_points_at" if you are searching who has kept a pointer to this memory.

ppw
- 171
- 1
- 3
-
1I get "`valgrind: Bad option: --vgdb-error=0`". (valgrind-3.6.1) – panzi Nov 03 '13 at 02:39
-
@panzi I think this only works from 3.8.1 above as ppw mentioned. I tried this with valgrind-3.11.0 and there were no problems. – Nubcake Jul 29 '17 at 18:39