et_selector(3erl)

πŸ“¦
version 25.3.2.8 Β· 2 versions
, in debian bookworm, ubuntu jammy, ubuntu noble

πŸŽ€ NAME πŸŽ€

et_selector β€” Define event transforms and trace patterns

This is the et_selector(3erl) page, bestie β€” the Erlang manual for picking what trace events are interesting, transforming trace data into event records, and changing trace patterns. It’s giving small module, big main-character energy. πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

Okay so the original DESCRIPTION section is literally empty here. No prose, no extra tea, just a heading and then straight into EXPORTS. We’re not inventing facts β€” the real details are all below. ✨


πŸ”₯ EXPORTS πŸ”₯

Three functions, all iconic, no filler. Let’s go. 🫢

πŸ’– make_pattern/1 πŸ’–

make_pattern(RawPattern) -> TracePattern

Types

RawPattern = detail_level()
TracePattern = erlang_trace_pattern_match_spec()
detail_level() = min | max | integer(X) when X >= 0, X =< 100

This one makes a trace pattern that is suitable to feed into change_pattern/1. It’s basically the pre-game snack before the actual pattern change. πŸ“

  • min detail level deactivates tracing of calls to et:trace_me/4,5. bye tracing πŸ‘‹
  • max detail level activates tracing of all calls to et:trace_me/4,5. all of them. periodt.
  • integer(X) detail level activates tracing of calls to et:trace_me/4,5 whose detail level argument is lesser than X. (And yeah, X stays in the 0 to 100 range from the type.)
  • Also: see erlang:trace_pattern/2 for more info about its match_spec(). iykyk.

πŸ’œ change_pattern/1 πŸ’œ

change_pattern(Pattern) -> ok

Types

Pattern = detail_level() | empty_match_spec() | erlang_trace_pattern_match_spec()
detail_level() = min | max | integer(X) when X >= 0, X =< 100
empty_match_spec() = []

This activates/deactivates tracing by changing the current trace pattern. It’s the vibe check for your 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. That’s [], bestie β€” empty and powerful. πŸ’€
  • Other match specs activate tracing of calls to et:trace_me/4,5 accordingly with erlang:trace_pattern/2.

πŸ¦‹ parse_event/2 πŸ¦‹

parse_event(Mod, ValidTraceData) -> false | true | {true, Event}

Types

Mod = module_name() | undefined
module_name() = atom()
ValidTraceData = erlang_trace_data() | record(event)
erlang_trace_data() = {trace, Pid, Label, Info} | {trace, Pid, Label, Info, Extra} | {trace_ts, Pid, Label, Info, ReportedTS} | {trace_ts, Pid, Label, Info, Extra, ReportedTS} | {seq_trace, Label, Info} | {seq_trace, Label, Info, ReportedTS} | {drop, NumberOfDroppedItems}

This transforms trace data and makes an event record out of it. It’s literally the glow-up from raw trace tuple to #event{} record. ✨

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/4 and 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.
bestie, that false is not a sad ending β€” it just means the trace data didn’t pass the vibe check and gets dropped. 🫢

πŸ’– that’s the whole page, bestie. Cute little sign-off: source is Ericsson AB, version is et 1.6.5. The footer didn’t give a date, so I’m not inventing one β€” no cap. πŸŽ€βœ¨