Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Debug helpers and custom metrics

hotpath provides macros for tracking values and logging debug info for profiled applications. All output is viewable in the TUI’s Debug tab.

hotpath::dbg!

Works like std::dbg! but sends debug output to the profiler instead of stderr. Logs are grouped by source location (file and line number) and viewable in the TUI.

#[hotpath::main]
fn main() {
    // Debug a single value - logs "3"
    hotpath::dbg!(1 + 2);

    // Debug multiple values
    hotpath::dbg!(foo(), bar());
}

hotpath::val!

Tracks key-value pairs. Unlike dbg!, values are grouped by key name rather than source location, making it useful for tracking named metrics across different code locations.

#[hotpath::main]
fn main() {
    // Track a counter value
    let count = 42;
    hotpath::val!("request_count").set(&count);

    // Track state changes
    let state = "connected";
    hotpath::val!("connection_state").set(&state);
}

Values must implement std::fmt::Debug. Each call to .set() updates the entry and appends to its log history in the TUI.

hotpath::gauge!

Tracks numeric values with set, increment, and decrement operations. Gauges display current value, and updates history in the TUI.

#[hotpath::main]
fn main() {
    // Set an absolute value
    hotpath::gauge!("queue_size").set(42.0);

    // Increment/decrement
    hotpath::gauge!("active_connections").inc(1.0);
    hotpath::gauge!("active_connections").dec(1.0);

    // Chain operations
    hotpath::gauge!("counter").set(0.0).inc(5.0).dec(2.0);
}