[Haskell-cafe] Best way to find an "undefined" error?
saynte at gmail.com
Thu Feb 14 21:25:07 EST 2008
On Thu, Feb 14, 2008 at 5:12 PM, Scott West <saynte at gmail.com> wrote:
> On Thu, Feb 14, 2008 at 4:43 PM, Don Stewart <dons at galois.com> wrote:
> > saynte:
> > > On Thu, Feb 14, 2008 at 3:02 PM, Denis Bueno <dbueno at gmail.com> wrote:
> > > > On Thu, Feb 14, 2008 at 2:55 PM, Don Stewart <dons at galois.com> wrote:
> > > > > You can use the profiler to get a stack trace, or use the new
> > > > > GHCi debugger to step backwards from the exception to the source.
> > > > >
> > > > > I wrote a bit of a tutorial for this here:
> > > > >
> > > > > http://cgi.cse.unsw.edu.au/~dons/blog/2007/11/14#no-exceptions
> > > >
> > > > Section 6.3 of http://haskell.org/haskellwiki/Debugging also is
> > > > relevant for using ghcu to step backward ... perhaps the section label
> > > > is misleading, though. Feel free to modify as needed if you find the
> > > > ghci stepper lets you find the problem
> > >
> > > Well, when using +RTS -xc, I get:
> > >
> > > <GHC.Err.CAF><GHC.Err.CAF>Prelude.undefined
> > >
> > > I'm not really sure what to do with this, not really the stacktrace I
> > > was hoping for. The ghci debugger I found was really quite nice, up
> > > until it his some portion of code that it isn't interpreting. By not
> > > "interpreting" i mean things that have been already been compiled and
> > > it's just calling (even if it has been compiled with profiling). I
> > > have a feeling that my problem is somewhere in something that has
> > > already been compiled.
> > Is it possible to just load all the code interpreted? Or is the problem
> > in a dependent library?
> > If you profile and let the program terminate, there should be a stack
> > trace in the .prof as well.
> > -- Don
> Well, I can load a bunch of it interpreted. I've already done this as
> far as I think I can. The only pieces laying outside the interpreter
> are the GHC libraries and Gtk2Hs. The really funny thing, is that
> (essentially) I believe the error results from a call to "fromDynamic"
> out of Data.Dynamic. This sort of leads me to believe that someone's
> "Typeable" instance is being funny. Again though, all the Typeable's
> in the immediate area of my code seem to be fine.
> (the .prof didn't seem to reveal anything yet... I'll look it over a
> little more closely though)
I did finally find the error (in one of the pieces of code not written
by myself). A few instances of Typeable were trying to pattern match
their arguments. *bomb*
In either case, it was an interesting experience!
Thanks for the help all!
More information about the Haskell-Cafe