Expand description
A tracing Layer for generating a call graphs.
§Overview
tracing
is a framework for instrumenting Rust programs to collect
scoped, structured, and async-aware diagnostics. tracing-callgraph
provides helpers
for consuming tracing
instrumentation that can later be visualized as a
call graph in Graphviz dot
representation.
§Layer Setup
use tracing_callgraph::GraphLayer;
use tracing_subscriber::{registry::Registry, prelude::*};
fn setup_global_subscriber() -> impl Drop {
let (graph_layer, _guard) = GraphLayer::with_file("./output.dot").unwrap();
let subscriber = Registry::default().with(graph_layer);
tracing::subscriber::set_global_default(subscriber).expect("Could not set global default");
_guard
}
#[tracing::instrument]
fn outer_a() {
inner()
}
#[tracing::instrument]
fn outer_b() {
inner()
}
#[tracing::instrument]
fn inner() {}
fn main() {
let _ = setup_global_subscriber();
outer_a();
outer_b();
}
Structs§
- Error
- The error type for
tracing-flame
- Flush
Guard - An RAII guard for flushing a writer.
- Graph
Layer - A
Layer
that records span open events as directed edges in a call graph.