Beam files, module beam_lib and source code

Robert Virding <>
Wed Jan 24 15:39:39 CET 2001


Try:

> {ok, {_,[{_,{_,Forms}}]}} = beam_lib:chunks(YourBeamFile,[abstract_code]).
...
> lists:foreach(fun(F) -> io:put_chars(user,[erl_pp:form(F),"\n"]) end, Forms).

<Your erlang program will be written out>

To help the debugger the source code in abstract form can be included in
the beam file.  Unfortunately the default is to include it.  Giving 
the option 'no_debug_info' causes the compiler to not include the code.

While it is very nice to have a debugger I don't think source should be
included as default.  Here is a little patch to compile.erl which
inverts this behaviour, the default is to NOT include the source and you
must give the option 'debug_info' to include source.

*** compile.erl~        Wed Jan 24 14:40:36 2001
--- compile.erl Wed Jan 24 15:05:16 2001
***************
*** 335,341 ****
       {iff,dexp,{listing,"expand"}},
       {iff,'E',{src_listing,"E"}},
       {iff,'abstr',{listing,"abstr"}},
!      {unless,no_debug_info,?pass(save_abstract_code)},
  
       %% Core Erlang passes.
       {pass,v3_core},
--- 335,341 ----
       {iff,dexp,{listing,"expand"}},
       {iff,'E',{src_listing,"E"}},
       {iff,'abstr',{listing,"abstr"}},
!      {iff,debug_info,?pass(save_abstract_code)},
  
       %% Core Erlang passes.
       {pass,v3_core},

Apply the patch to lib/compiler/src/compile.erl and remake.

	Robert





More information about the erlang-questions mailing list