Determine where a match fails
Thomas Lindgren
thomasl_erlang@REDACTED
Fri Jan 6 00:04:41 CET 2006
--- Sean Hinde <sean.hinde@REDACTED> wrote:
>
> On 4 Jan 2006, at 17:15, Dave Smith wrote:
>
> > Greetings,
> >
> > Is there a way to determine the File/Line where a
> badmatch error is
> > generated? Obviously, you get a stack trace with
> the function call,
> > but more often than not, that's not quite
> descriptive enough, since
> > all you get is the value that didn't
> match...something.
> >
> > Any guidance would be appreciated. :)
>
> You might like to try out the smart exceptions
> package from jungerl.
> I believe this adds such things.
>
> I've never actually tried it myself, but it might
> just do the job.
I use smart_exceptions for my development and find it
very convenient; but note that there are a couple of
limitations:
1. It doesn't handle variables exported out of
expressions. This is due to three things: (i) the
smart_exceptions functionality is provided by
rewriting the code so that line and module (and other
stuff) is added at most places where an exception can
occur; (ii) the erlang compiler demands that all
clauses export the same variables, even if some of
them will never terminate normally; (iii) computing
the exported variables of an expression is nontrivial.
2. On some R10 Erlang releases, using smart_exceptions
triggered a compiler bug (which generated incorrect
object code). I haven't seen this for recent R10
releases, however.
(Finally, as an aside, a better solution would be for
the compiler to insert the equivalent information and
for the VM to use it when an exception occurs.)
Best,
Thomas
__________________________________________
Yahoo! DSL Something to write home about.
Just $16.99/mo. or less.
dsl.yahoo.com
More information about the erlang-questions
mailing list