# Matter tracing This library provides a runtime-configurable tracing and logging infrastructure for matter. ## Types of data ### Tracing Tracing is mostly intended for following execution flow and measuring time spent for various operations. They are: - _scoped_ where separate begin and end events are emitted _or_ - _instant_ where a single notable event is emitted, representing a point in time of a notable event Tracing and instant values MUST be constant strings as some backends rely on that property for caching (e.g. pw_trace would do tokenization and perfetto marks them as `perfetto::StaticString`) ### Data Logging Data logging provides the tracing module the opportunity to report input/output data for matter data processing. The data logging is generally limited in count and covers: - _Messages_, specifically sent matter requests and received matter responses - _DNSSD_ operations as they are a core component of matter, specifically attempts to discover nodes as well as when a node is discovered or fails discovery. ## Usage Backends are defined by extending `chip::Tracing::Backend` in `backend.h` and registering it via functions in `registry.h` Actual usage is controlled using `macros.h` (and for convenience `scope.h` provides scoped begin/end invocations). tracing macros can be completely made a `noop` by setting ``matter_enable_tracing_support=false` when compiling.