Crates.io | scoped-trace |
lib.rs | scoped-trace |
version | 0.1.0 |
source | src |
created_at | 2023-03-24 20:29:46.641895 |
updated_at | 2023-03-24 20:29:46.641895 |
description | Collect scoped backtraces. |
homepage | |
repository | https://github.com/jswrenn/scoped-trace |
max_upload_size | |
id | 819696 |
size | 41,115 |
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
This project is licensed under the Apache License, Version 2.0, or the MIT license, at your option.
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.