And in combination with conditional breakpoints executing commands, you can have GDB "dance" any application to whatever tune you wish:
commands ... call d(cons(form)) call symbol_name(t) cont end
It really is a marvelous tool - unfortunately, people don't know anything except the basics (if that)