Great! I'm glad you've been enjoying them! Debugging is actually a
part of the incentive to write the llvm backend. It supports embedding
DWARF hooks into the source, which then would let you use gdb to trace
through the execution. I've still got a ways to go before I get to
that point though. If you're interested in reading more about it,
here's llvm's documentation about it:
http://llvm.org/docs/SourceLevelDebugging.html
Now, if you want to learn functional languages with a great debugger,
you could try out ocaml:
http://caml.inria.fr
http://caml.inria.fr/pub/docs/manual-ocaml/manual030.html
It's actually got a reversible debugger, that lets you step forwards
and backwards through time to see what's going on. That helped me a
lot when I was first starting out with it.