tracing

Serge Aleynikov serge@REDACTED
Sat Sep 10 00:30:06 CEST 2005


Thanks for the tip!

I wish dbg had a function to do this gracefully without hacking the 
tracer process.  :-)

Serge

Ulf Wiger wrote:
> Den 2005-09-09 21:23:26 skrev Serge Aleynikov <serge@REDACTED>:
> 
>> foo_trace(Args) ->
>>     dbg:tracer(process, {fun trace_handler/2, []}),
>>     dbg:p(self(), call),
>>     dbg:tpl(?MODULE, [{'_',[],[{return_trace}]}]),
>>     R = foo(Args),
>>     dbg:stop(),
>>     R.
>>  trace_handler(Msg, Acc) ->
>>     [Msg | Acc].
>>  Is there a way to retrieve the content of this accumulator before  
>> calling dbg:stop()?
> 
> 
> 
> The only thing I could think of is this:
> 
> 8> dbg:tracer(process, {fun(Msg,Acc) -> [Msg|Acc] end, [foo]}).
> {ok,<0.43.0>}
> 9> dbg:get_tracer().
> {ok,<0.44.0>}
> 10> pid(0,44,0) ! {self(),stop}.
> {<0.30.0>,stop}** dbg got EXIT - terminating: normal
> 
> 11> flush().
> Shell got {stop,[foo]}
> ok
> 
> That is, if you send the tracer process a {From, stop}
> message, it will stop and return the accumulator in
> the stop message.
> 
> /Uffe



More information about the erlang-questions mailing list