The Kansas Lava team have been looking into improving Haskell debugging tools in order to tackle more complex Lava circuits. As part of this effort, we dusted off Hood, a small post-mortem debugger developed for GHC 4.X at OGI in 1999. Hood has now been ported to GHC 6.X, and re-released on hackage. Watch this space for Hood extensions in the coming months.
Hood is based on the concept of observation of intermediate data structures, rather than the more traditional stepping and variable examination paradigm used by imperative language debuggers. It can observe base types (Int, Bool, Float, etc.), finite and infinite structures (lists, trees, arrays, etc.), functions, and monadic actions. Notably, Hood preserves the type and strictness properties of the functions under observation, meaning your program can be debugged without affecting its semantics. Best of all, Hood can be extended to observe custom data types with simple instance declarations.
You can find more information, including examples and a tutorial, on the new Hood webpage:
We hope you find it useful!
Andrew Farmer, Andy Gill