#backtrace #sys #gcc

sys backtrace-sys

Bindings to the libbacktrace gcc library

24 releases

0.1.24 Aug 15, 2018
0.1.23 May 29, 2018
0.1.16 Oct 15, 2017
0.1.12 Jul 20, 2017
0.1.2 Jul 14, 2015

#3 in Debugging

Download history 31302/week @ 2018-05-26 36142/week @ 2018-06-02 35743/week @ 2018-06-09 30515/week @ 2018-06-16 32267/week @ 2018-06-23 32735/week @ 2018-06-30 30983/week @ 2018-07-07 34379/week @ 2018-07-14 34937/week @ 2018-07-21 31516/week @ 2018-07-28 33685/week @ 2018-08-04 34502/week @ 2018-08-11 35671/week @ 2018-08-18

144,792 downloads per month
Used in 3 crates (1 directly)

MIT/Apache

605KB
16K SLoC

C 10K SLoC // 0.2% comments Shell 6K SLoC // 0.1% comments Rust 120 SLoC // 0.0% comments

backtrace-rs

Build Status Build status

Documentation

A library for acquiring backtraces at runtime for Rust. This library aims to enhance the support given by the standard library at std::rt by providing a more stable and programmatic interface.

Install

[dependencies]
backtrace = "0.3"
extern crate backtrace;

Note that this crate requires make, objcopy, and ar to be present on Linux systems.

Usage

To simply capture a backtrace and defer dealing with it until a later time, you can use the top-level Backtrace type.

extern crate backtrace;

use backtrace::Backtrace;

fn main() {
    let bt = Backtrace::new();

    // do_some_work();

    println!("{:?}", bt);
}

If, however, you'd like more raw access to the actual tracing functionality, you can use the trace and resolve functions directly.

extern crate backtrace;

fn main() {
    backtrace::trace(|frame| {
        let ip = frame.ip();
        let symbol_address = frame.symbol_address();

        // Resolve this instruction pointer to a symbol name
        backtrace::resolve(ip, |symbol| {
            if let Some(name) = symbol.name() {
                // ...
            }
            if let Some(filename) = symbol.filename() {
                // ...
            }
        });

        true // keep going to the next frame
    });
}

Platform Support

This library currently supports OSX, Linux, and Windows. Support for other platforms is always welcome!

License

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in backtrace-rs by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

  • build build.rs
  • build cc 1.0