[Haskell] ANNOUNCE: The experimental GHCi debugger

pepe mnislaih at gmail.com
Tue Aug 22 12:12:39 EDT 2006


Dear all

It is that time of the year again. Google SoC has come to an end and a
flurry of students announce their results to the corresponding
community. Yesterday Jun Mukai reported on the status of HaskellNet
and now it is the turn of the GHCi debugger project.

The contributions of this project are mainly two:
 - Intermediate value viewer: The new ':print' and ':sprint' in GHCi
allow to explore semievaluated values without forcing them, accessing
the internals and recovering the types.
- Dynamic breakpoints: The new ':breakpoint' command integrates
seamlessly in GHCi and allows to set breakpoints in your code

Which add to previously existing work polished as part of this project too:
 - The breakpoint and breakpointCond functions in GHC.Base allow to
manually install (conditional) breakpoints in your code, which will be
activated when you run your program in GHCi

DETAILS
Though it needs an update, you can check the wiki dump page at:
http://haskell.org/haskellwiki/GHC/GHCiDebugger

In it you will find a lot of outdated stuff, but also some interesting things:
  * some examples of the closure viewer
  * how to get the patches and build it
  * A link to the Users Guide documentation page for GHCi that now
includes a section for the debugger (I know it does not render well in
all the browsers out there, but this is just a snapshot)
  * A video! Watch me debug a Haskell Universal Machine (I know I
know, it's not so impressing, and sorry for the poor audio. Macbooks
don't seem to like cheap mics so I had to use a phone bluetooth
hands-free)

FUTURE WORK
Overall, this version is a basic, "the simplest thing that could
possibly work" implementation. Call stack traces have unhappily not
made it into this version, but there are some proposals already and
the GHC people seem very interested in getting themselves a feature
complete debugger, so you should not lose hope.
Future work should include exploring more advanced realizations of
dynamic breakpoints.

ACKNOWLEDGEMENTS
Big thanks to Google for making this project possible.
Big thanks to my mentors too, David Himmelstrup and Simon Marlow, for
accepting this role. I know how busy they are and I hope I have not
been too big of a burden during these months.



As a colofon to the project, odds are that the GHC people will include
my patches in the 6.6 Release Candidate at the end of the week.
Needless to say, I will be most interested in hearing from any issues
you may find, especially if you try it before the Release Candidate
date.
Please let me know of any additional feature requests you have too, or
better add them to the wiki where other people will see them too.

So please, if you feel like doing it, give it a go before the Release
Candidate and let me know if you found any issue!



pepe


More information about the Haskell mailing list