16 releases

0.6.1 Oct 22, 2023
0.6.0 Jul 30, 2023
0.5.1 Apr 25, 2021
0.5.0 Nov 21, 2020
0.2.2 Jun 29, 2019

#60 in Debugging

Download history 6956/week @ 2023-11-21 10654/week @ 2023-11-28 10116/week @ 2023-12-05 7498/week @ 2023-12-12 6228/week @ 2023-12-19 4140/week @ 2023-12-26 6288/week @ 2024-01-02 6306/week @ 2024-01-09 6772/week @ 2024-01-16 6034/week @ 2024-01-23 5973/week @ 2024-01-30 6422/week @ 2024-02-06 5613/week @ 2024-02-13 6916/week @ 2024-02-20 6955/week @ 2024-02-27 6820/week @ 2024-03-05

27,602 downloads per month
Used in 97 crates (69 directly)

MIT/Apache

34KB
569 lines

color-backtrace

Crates.io docs.rs MIT licensed Apache 2.0 licensed

A Rust library that makes panics a little less painful by nicely colorizing them and printing the relevant source snippets.

[dependencies]
color-backtrace = { version = "0.6" }

To enable it, simply place this code somewhere in your app initialization code:

color_backtrace::install();

If you want to customize some settings, you can instead do:

use color_backtrace::{default_output_stream, BacktracePrinter};
BacktracePrinter::new().message("Custom message!").install(default_output_stream());

Features

  • Colorize backtraces to be easier on the eyes
  • Show source snippets if source files are found on disk
  • Print frames of application code vs dependencies in different color
  • Hide all the frames after the panic was already initiated
  • Hide language runtime initialization frames

Usage in tests

Unfortunately, defining custom init functions run before tests are started is currently not supported in Rust. Since initializing color-backtrace in each and every test is tedious even when wrapping it into a function, I recommended using the ctor crate for this.

Somewhere, preferably in your crate's main module, put the following code:

#[cfg(test)]
mod tests {
    use ctor::ctor;

    #[ctor]
    fn init_color_backtrace() {
        color_backtrace::install();
    }
}

You can also do this outside of a #[cfg(test)] section, in which case the panic handler is installed for both test and regular runs.

Screenshot

Screenshot

Dependencies

~2.5–4.5MB
~81K SLoC