trace and match_spec

Siri Hansen <>
Mon Feb 18 16:30:29 CET 2002


Fredrik Linder wrote:
> ....
> 
> ---[Working, but no return tracing]---
> erlang:trace(Pid1, true, [call, 'receive', return_to]),
> erlang:trace_pattern({'_', '_', '_'}, true, [local]),

The return_to flag will only tell you when you return to(!) a
function, but you will not get any return values. The message you get
is
{trace,Pid,return_to,MFA}
 
> ---[Working, but too much tracing]---
> erlang:trace(Pid1, true, all),
> erlang:trace_pattern({'_', '_', '_'}, true, [local]),

This should be the same as above when it comes to return tracing
 
> ---[Not Working]---
> erlang:trace(Pid1, true, [call, 'receive', return_to]),
> MatchHead = '_',    % Any arguments
> MatchCond = [],    % Always
> MatchBody = [{return, trace}],    % Trace return values (disables tail
> recursion)
> erlang:trace_pattern({Mod, '_', '_'}, [{MatchHead, MatchCond, MatchBody}],
> [local]),
> 
> =ERROR REPORT==== 18-Feb-2002::15:42:17 ===
> Error in process <0.292.0> with exit value:
> {badarg,[{erlang,trace_pattern,[{'_','_','_'},[{'_',[],[{return,trace}]}]]},
> {t,tracer_init,1}]}

If you change {return,trace} to {return_trace} this should work, and
it will give the return values. The message you get is
{trace,Pid,return_from,MFA,ReturnValue}

/siri



More information about the erlang-questions mailing list