[erlang-questions] Re: Getting line number in backtrace?

Thomas Lindgren <>
Fri Dec 3 16:22:35 CET 2010


Hi Brian,

I'm afraid this library is semi-abandonware at the moment, in that I can't give 
it a lot of timely attention. But, I'll give three comments in decreasing order 
of usefulness.

1. Have you tried using the 'stable' version? I haven't gotten a lot of feedback 
on the 'devel' version, so it may have problems. The main known problem with 
'stable' is that the busy people at OTP _may_ have added new syntax that isn't 
handled well.

2. If you use "erlc -E", you can see the transformed code. Could perhaps be 
helpful. Or perhaps not.

3. My own view is that line numbers are hugely helpful. Ideally, I'd want all 
exceptions to contain that info and the entire call stack decorated. 
Unfortunately, there are some cases where a parse transform is powerless, so it 
would need compiler and/or VM support.

Best,
Thomas


----- Original Message ----
> From: Brian Candler <>
> To: 
> Sent: Fri, December 3, 2010 3:49:52 PM
> Subject: [erlang-questions] Re: Getting line number in backtrace?
> 
> Robert Virding wrote:
> > Is the smart_exceptions module compiled and put in  a place where erlc can 
>find it?
> 
> It was certainly compiled:
> 
> $ ls -l  ebin/smart_exceptions.beam ebin/mapform0.beam 
> -rw-r--r-- 1 brian brian   1900 2010-12-02 19:51 ebin/mapform0.beam
> -rw-r--r-- 1 brian brian 18936  2010-12-02 19:51 ebin/smart_exceptions.beam
> 
> However I hadn't added "-pa  ebin" to the erlc command line, so it couldn't
> find it. Thank you for  pointing me in the right direction there.
> 
> I can now compile code with the  smart_exceptions transformation, but the
> exception output isn't any  different:
> 
> $ rm ebin/my_test.beam 
> $ rake
> (in /v/git/rfe)
> erlc  -pa ebin +'{parse_transform,smart_exceptions}' +debug_info -o ebin  
>src/my_test.erl
> $ erl +Bc -pa ebin
> Erlang R13B03 (erts-5.7.4) [source]  [64-bit] [smp:2:2] [rq:2] 
>[async-threads:0] [hipe]  [kernel-poll:false]
> 
> Eshell V5.7.4  (abort with ^G)
> 1>  my_test:go().
> {foo,bar}** exception error: no match of right hand side value  {foo,bar}
>      in function  my_test:dostuff/1
>       in call from my_test:go/0
> 2> my_test:dostuff({x,y}).
> {x,y}** exception  error: no match of right hand side value {x,y}
>      in  function  my_test:dostuff/1
> 
> Here's the source:
> 
> $ cat  src/my_test.erl 
> -module(my_test).
> -export([go/0,dostuff/1]).
> 
> go()  ->
>   dostuff({foo,bar}),
>   io:format("The  end~n").
> 
> dostuff(A) ->
>   io:write(A),
>   {foo, baz} =  A,
>    io:format("Finished~n").
> 
> 
> Cheers,
> 
> Brian.
> 
> ________________________________________________________________
> erlang-questions  (at) erlang.org mailing  list.
> See http://www.erlang.org/faq.html
> To unsubscribe; mailto:
> 
> 


      


More information about the erlang-questions mailing list