et_selector (et v1.7.3)

Copy Markdown View Source

Define event transforms and trace patterns

Summary

Functions

Activates/deactivates tracing by changing the current trace pattern.

Makes a trace pattern suitable to feed change_pattern/1

Transforms trace data and makes an event record out of it.

Types

event()

(not exported)
-type event() ::
          #event{detail_level :: term(),
                 trace_ts :: term(),
                 event_ts :: term(),
                 from :: term(),
                 to :: term(),
                 label :: term(),
                 contents :: term()}.

level()

(not exported)
-type level() :: 0..100.

Functions

change_pattern(Pattern :: {Mod :: module(), Pattern}) -> ok

Types

DetailLevel = level()
TracePattern = [{[term()] | '_' | atom(), [term()], [term()]}]
EmptyTracePattern = []

Activates/deactivates tracing by changing the current trace pattern.

min detail level deactivates tracing of calls to et:trace_me/4,5

max detail level activates tracing of all calls to et:trace_me/4,5

integer(X) detail level activates tracing of all calls to et:trace_me/4,5 whose detail level argument is lesser than X.

An empty match spec deactivates tracing of calls to et:trace_me/4,5

Other match specs activates tracing of calls to et:trace_me/4,5 accordingly with erlang:trace_pattern/2.

make_pattern(RawPattern) -> Result

Types

RawPattern = {Mod :: module(), RawPattern}
Result = {Mod :: module(), TracePattern}
TracePattern = [{[term()] | '_' | atom(), [term()], [term()]}]

Makes a trace pattern suitable to feed change_pattern/1

Min detail level deactivates tracing of calls to et:trace_me/4,5

Max detail level activates tracing of all calls to et:trace_me/4,5

integer(X) detail level activates tracing of all calls to et:trace_me/4,5 whose detail level argument is lesser than X.

See also erlang:trace_pattern/2 for more info about its match_spec()

parse_event(Mod, ValidTraceData) -> Result

Types

Mod = module()
ValidTraceData = ErlangTraceData | event()
Result = boolean | {true, event()}
ErlangTraceData = {trace, pid(), atom(), term()} |
          {trace, pid(), atom(), term(), term()} |
          {trace_ts, pid(), atom(), term(), TS :: {integer(), integer(), integer()}} |
          {trace_ts, pid(), atom(), term(), term(), TS :: {integer(), integer(), integer()}} |
          {seq_trace, atom(), term()} |
          {seq_trace, atom(), term(), TS :: {integer(), integer(), integer()}} |
          {drop, integer()}

Transforms trace data and makes an event record out of it.

See erlang:trace/3 for more info about the semantics of the trace data.

An event record consists of the following fields:

  • detail_level - Noise has a high level as opposed to essentials.

  • trace_ts - Time when the trace was generated. Same as event_ts if omitted in trace data.

  • event_ts - Time when the event record was created.

  • from - From actor, such as sender of a message.

  • to - To actor, such as receiver of message.

  • label - Label intended to provide a brief event summary.

  • contents - All nitty gritty details of the event.

See et:trace_me/4and et:trace_me/5 for details.

Returns:

  • {true, Event} - where Event is an #event{} record representing the trace data

  • true - means that the trace data already is an event record and that it is valid as it is. No transformation is needed.

  • false - means that the trace data is uninteresting and should be dropped