tracing

Ulf Wiger ulf@REDACTED
Sat Sep 10 00:14:48 CEST 2005


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
-- 
Ulf Wiger



More information about the erlang-questions mailing list