I've been experimenting with using gdb as a tool for learning C, rather than merely debugging C, and it's a lot of fun.