Skip to main content

Crate perfetto_sdk

Crate perfetto_sdk 

Source
Expand description

§perfetto-sdk

Safe and ergonomic Rust bindings for the Perfetto tracing framework.

This crate provides the main API for recording trace data from Rust applications. It wraps the Perfetto C API with safe Rust abstractions for tracing sessions, data sources, and track events.

§Quick start

use perfetto_sdk::track_event::*;

perfetto_sdk::track_event_categories! {
    pub mod my_categories {
        ("rendering", "Rendering events", []),
        ("input", "Input events", []),
    }
}
use my_categories as perfetto_te_ns;

perfetto_sdk::track_event_instant!("rendering", "DrawFrame");

§Features

  • Track events with categories, names, and typed arguments
  • Data sources for custom trace data
  • Protozero encoding in pure Rust for minimal overhead
  • Tracing sessions for programmatic trace collection

§Crate features

FeatureDefaultDescription
vendoredyesStatically links the bundled Perfetto C library
intrinsicsnoEnables branch-prediction hints to reduce trace overhead
CrateDescription
perfetto-sdk-sysLow-level FFI bindings
perfetto-sdk-deriveProc macros for function tracing
perfetto-sdk-protos-gpuGPU event protobuf bindings

Modules§

data_source
Data source module.
heap_buffer
Heap buffer module.
pb_decoder
Protobuf decoder module.
pb_msg
Protobuf message module.
pb_utils
Protobuf utils module.
producer
Producer module.
protos
Protobuf bindings module.
stream_writer
Stream writer module.
tracing_session
Tracing session module.
track_event
Track event module.

Macros§

pb_enum
Defines a protobuf enum.
pb_msg
Defines a protobuf message.
pb_msg_ext
Defines extra fields for a protobuf message.
scoped_track_event
Emits a pair of begin/end track events when category is enabled. The end event is emitted when the current scope ends.
trace_for_category
Calls lambda for each active instance where category is enabled.
track_event
Emits a track event when category is enabled. The optional lambda is only called when emitting an event.
track_event_begin
Emits a begin track event when category is enabled.
track_event_categories
Defines track event categories.
track_event_category_enabled
Determines if a category is enabled.
track_event_counter
Emits a counter track event when category is enabled.
track_event_end
Emits an end track event when category is enabled.
track_event_instant
Emits an instant track event when category is enabled.
track_event_set_category_callback
Sets the callback to invoke when a specific category is enabled.

Functions§

fnv1a
Computes the FNV-1a hash of bytes.