1 unstable release
0.1.0 | Mar 24, 2023 |
---|
#27 in #scoped
Used in tasktrace
18KB
266 lines
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.
Dependencies
~3–9MB
~83K SLoC