Suppose your libc free argument is called mem .
Then you can print everything that has been released:
(gdb) break __GI___libc_free # this is what my libc free is actually called Breakpoint 2 at 0x7ffff7af38e0: file malloc.c, line 3698. (gdb) commands 2 Type commands for when breakpoint 2 is hit, one per line. End with a line saying just "end". >print mem >c >end
Now, every time someone releases something, you get a small printout (you can omit c if you want it to stop free each time):
Breakpoint 2, *__GI___libc_free (mem=0x601010) at malloc.c:3698 3698 malloc.c: No such file or directory. in malloc.c $1 = (void *) 0x601010
Or, if you already know which memory address you are interested in, use cond to break when someone tries to specify this address free :
(gdb) cond 2 (mem==0x601010) (gdb) c Breakpoint 3, *__GI___libc_free (mem=0x601010) at malloc.c:3698 3698 malloc.c: No such file or directory. in malloc.c (gdb)
source share