|
|
@ -78,7 +78,7 @@ ensureScope(Input) -> |
|
|
|
|
|
|
|
traceInput([], _, _) -> |
|
|
|
ok; |
|
|
|
traceInput([{scope, Scope} | Tail], TracerState, Opts) -> |
|
|
|
traceInput([{scope, Scope} | Tail], TracerState, TraceOpts) -> |
|
|
|
%% We currently enable the following trace flags: |
|
|
|
%% - call: function calls |
|
|
|
%% - procs: process exit events; plus others we ignore |
|
|
@ -90,15 +90,16 @@ traceInput([{scope, Scope} | Tail], TracerState, Opts) -> |
|
|
|
%% |
|
|
|
%% @todo It might be useful to count the number of sends |
|
|
|
%% or receives a function does. |
|
|
|
ExtraFlags = [running || maps:get(running, Opts, false)] ++ [send || maps:get(send, Opts, false)], |
|
|
|
ExtraFlags = [running || maps:get(running, TraceOpts, false)] ++ [send || maps:get(send, TraceOpts, false)], |
|
|
|
[ |
|
|
|
erlang:trace(PidPortSpec, true, [call, procs, timestamp, arity, return_to, set_on_spawn, {tracer, tpTracerNif, TracerState} | ExtraFlags]) |
|
|
|
|| PidPortSpec <- Scope |
|
|
|
begin |
|
|
|
erlang:trace(PidPortSpec, true, [call, procs, monotonic_timestamp, arity, return_to, set_on_spawn, {tracer, tpTracerNif, TracerState} | ExtraFlags]) |
|
|
|
end || PidPortSpec <- Scope |
|
|
|
], |
|
|
|
traceInput(Tail, TracerState, Opts); |
|
|
|
traceInput([Mod | Tail], TracerState, Opts) when is_atom(Mod) -> |
|
|
|
traceInput(Tail, TracerState, TraceOpts); |
|
|
|
traceInput([Mod | Tail], TracerState, TraceOpts) when is_atom(Mod) -> |
|
|
|
MatchSpec = |
|
|
|
case Opts of |
|
|
|
case TraceOpts of |
|
|
|
#{process_dump := true} -> |
|
|
|
[{'_', [], [{message, {process_dump}}]}]; |
|
|
|
_ -> |
|
|
@ -107,7 +108,7 @@ traceInput([Mod | Tail], TracerState, Opts) when is_atom(Mod) -> |
|
|
|
%% The module must be loaded before we attempt to trace it. |
|
|
|
_ = code:ensure_loaded(Mod), |
|
|
|
_ = erlang:trace_pattern({Mod, '_', '_'}, MatchSpec, [local]), |
|
|
|
traceInput(Tail, TracerState, Opts). |
|
|
|
traceInput(Tail, TracerState, TraceOpts). |
|
|
|
|
|
|
|
stop() -> |
|
|
|
stop(?eTpfPoolId). |
|
|
|