#panic #log #logging

panic-context

在panic时显示手动维护的上下文信息

1 个不稳定版本

使用旧的Rust 2015

0.1.0 2017年7月7日

#125#panic

MIT 许可证

10KB
118

panic上下文

这个库允许在panic时打印手动维护的消息。

当你的程序panic时,它会打印回溯。然而,如果panic发生在循环中,就不清楚是哪个迭代是原因。可以使用日志记录,但打印会显著减慢执行速度,并且你会得到很多条记录,而只需要最后几条。

Panic context允许你设置一个在panic发生之前不会打印的值。它还会在作用域结束时自动忘记。

示例

#[macro_use] extern crate panic_context;

use panic_context::panic_context;

static ITEMS: &[&str] = &["foo", "bar", "yo", "nope"];

fn get_len(item: &str) -> usize { item.len() }
fn calc_sig(item: &str) -> &str { &item[3..] }

fn main() {
    let step = panic_context("step: ");

    step.update("calculate lengths");
    for item in ITEMS {
        panic_context!("item: {}", item);
        get_len(item);
    }

    step.update("calculate signatures");
    for item in ITEMS {
        panic_context!("item: {}", item);
        calc_sig(item);
    }

    panic!("boom!");
}

当这段代码在calc_sig中panic时,你会看到

Panic context:
step: calculate signatures
item: yo
thread 'main' panicked at '...', src/libcore/str/mod.rs:2162
note: Run with `RUST_BACKTRACE=1` for a backtrace.

依赖项

~14KB