scoped-trace

Crates.ioscoped-trace
lib.rsscoped-trace
version0.1.0
sourcesrc
created_at2023-03-24 20:29:46.641895
updated_at2023-03-24 20:29:46.641895
descriptionCollect scoped backtraces.
homepage
repositoryhttps://github.com/jswrenn/scoped-trace
max_upload_size
id819696
size41,115
Jack Wrenn (jswrenn)

documentation

README

scoped-trace

Capture scoped backtraces.

Use Trace::root to define the upper unwinding bound of an execution trace, and Trace::leaf to define its lower bounds (the points at which backtraces are collected). The resulting traces are trees, since a single invocation of Trace::root may have multiple sub-invocations of Trace::leaf.

For example, running this program:

use scoped_trace::Trace;

fn main() {
    let (_, trace) = Trace::root(|| foo());
    println!("{trace}");
}

fn foo() {
    bar();
    baz();
}

fn bar() {
    Trace::leaf();
}

fn baz() {
    Trace::leaf();
}

...will produce an output like:

╼ inlining::main::{{closure}} at example.rs:4:38
  ├╼ inlining::foo at example.rs:9:5
  │  └╼ inlining::bar at example.rs:14:5
  └╼ inlining::foo at example.rs:10:5
     └╼ inlining::baz at example.rs:18:5

License

This project is licensed under the Apache License, Version 2.0, or the MIT license, at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in scoped-trace by you, shall be licensed as MIT and Apache 2.0, without any additional terms or conditions.

Commit count: 11

cargo fmt