Rather than always emit events to an external device, the kernel can keep all of the trace events in an internal circular buffer.
This buffer can be programmatically dumped to an external device on demand when a certain triggering condition is met, making this a very powerful tool for identifying elusive bugs that crop up under certain runtime conditions.