[Haskell-cafe] Re: How to catch error in array index when debugging
Peter Hercek
phercek at gmail.com
Sat Mar 14 18:12:14 EDT 2009
Colin Paul Adams wrote:
>>>>>> "Adrian" == Adrian Neumann <aneumann at inf.fu-berlin.de> writes:
>
> Adrian> You can use the ghci debugger
> >> http://www.haskell.org/ghc/docs/latest/html/users_guide/ghci-
> Adrian> debugger.html
>
> Adrian> it can set breakpoints on exceptions.
>
> So i tried adding the -fbreak-on-error flag. It made no difference -
> it still exited:
>
> <interactive>: Error in array index
> <interactive>: interrupted
> <interactive>: warning: too many hs_exit()s
IIRC, this is because you are catching exceptions at some higher level
where you actually find out that this kind of an exception is not
handled and give up. If your application is Gtk2Hs then this library
will do the catching you do not like in this case.
Try to use -fbreak-on-exception instead of -fbreak-on-error. If you try
this you may need to set break-on-exception late enough in the execution
(use some breakpoint) so that you are not stopping at places which are
ok (are correctly handled in an exception handler).
In addition to other solutions mentioned here you can also setup
conditional breakpoints in GHCi because GHCi breakpoints can be
scripted. This is what I mostly use. Most of my debugging is done by
writing GHCi debug scripts. Some ideas how to do it are here:
http://permalink.gmane.org/gmane.comp.lang.haskell.glasgow.user/16270
It does not work well for interactive command line applications now, but
it will work well for them when GHC 6.10.2 is out (the three most
critical patches were merged). This alternative may have steep learning
curve for such a simple thing but once mastered it works well.
Peter.
More information about the Haskell-Cafe
mailing list