The Haskell Object Observation Debugger


HOOD Links




This is the web pages for the Haskell Object Observation Debugger (HOOD).

The current released version of HOOD is the July 2000 release, but there is also a patch to all HOOD to work with GHC 5.00.

HOOD is a small post-mortem debugger for the lazy functional language Haskell. It 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.

HOOD offers the following features.

  • Observation of base types (Int, Bool, Float, etc)
  • Observation of both finite and infinite structures (Lists, trees, arrays, etc).
  • Observation of usage patterns for functions.
  • Observation of monadic actions, including IO actions.
  • Hooks to add observational capabilities for new base type and used defined types.
  • Programmable browsing capabilities - structure browsers can by coded and plugged in.
  • Includes a basic structure rendering package that uses a Haskell like syntax.
  • Thread-safe observations are are supported.
  • Some versions support observations on exceptions.

Most of HOOD is written in Haskell98, but it uses some commonly implemented extensions (unsafePerformIO, IORef's) to provide hooks for observing structures. It has been ported to the following systems.

  • GHC - The Glasgow Haskell Compiler (tested with 4.08)
  • Hugs 98 (Also called Classic Hugs)
  • nhc98
  • The Snowball Haskell Compiler
It should be straightforward to port to other Haskell compilers.

This is the first public release of HOOD. Future release will include other rendering engines (with evaluation order viewing), and perhaps a polymorphic version of the observe combinator for some systems.

Enjoy!

Copyright ©2000 Andy Gill