I'm working on adding support for GDB tracepoints to KGDB, a GDB stub for the Linux kernel. Essentially, a tracepoint is like a breakpoint except that, when you hit a tracepoint, the stub records some data that you specify (using arbitrary C expressions; you can deference pointers, index arrays, refer to structure members, etc.) in a log, and then immediately continues the program, without communicating with GDB. Then you can examine log hits with GDB; GDB acts as if the selected hit's recorded data were "live". If you log a hundred bytes or so off the top of the stack, you can even get backtraces.
I'd like to get a Trac site set up for it, so people can see what I'm doing.
I wonder --- would it be possible to provide Dwarf CFI data for the IRQ handlers, so you could unwind through IRQ's?