A while back I wrote how I sometimes use Valgrind to print a stack trace every time a particular program point is reached. I just learned how to do likewise with GDB. Here’s an example session that illustrates what to do.
(gdb) break je_chunk_alloc_mmap # set a breakpoint Breakpoint 1 at 0x1aa32c0 (gdb) commands # enter breakpoint command sequence Type commands for breakpoint(s) 1, one per line. End with a line saying just "end". >bt # print stack trace >c # continue execution >end # end command sequence (gdb) set pagination off # don't pause when the screen fills up (gdb) set logging on # copy output to a file Copying output to gdb.txt.
This is better than the Valgrind technique because (a) it doesn’t require modifying the source code, and (b) programs tend to run faster under GDB than they do under Valgrind.
Thanks to Mike Hommey for helping with this.