Bladeren bron

ft: 代码修改

master
SisMaker 3 jaren geleden
bovenliggende
commit
11f685bab9
2 gewijzigde bestanden met toevoegingen van 14 en 9 verwijderingen
  1. +5
    -1
      c_src/tracer/tpTracerNif.c
  2. +9
    -8
      src/eTpf.erl

+ 5
- 1
c_src/tracer/tpTracerNif.c Bestand weergeven

@ -71,7 +71,6 @@ static void unload(ErlNifEnv* env, void* priv_data)
}
// enabled(TraceTag, TracerState, Tracee)
static ERL_NIF_TERM enabled(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) {
ERL_NIF_TERM tracers, value;
ErlNifPid tracer;
@ -139,6 +138,11 @@ static ERL_NIF_TERM enabled_send(ErlNifEnv *env, int argc, const ERL_NIF_TERM ar
// trace(TraceTag, TracerState, Tracee, TraceTerm, Opts)
static ERL_NIF_TERM trace(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) {
for(int i = 0; i <= argc - 1; i++) {
enif_fprintf(stdout, "IMY************trace000 %T\n", argv[i]);
}
ERL_NIF_TERM tracers, head, ts, extra, mspec, msg;
ErlNifPid tracer;
unsigned int nth;

+ 9
- 8
src/eTpf.erl Bestand weergeven

@ -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).

Laden…
Annuleren
Opslaan