gecko-dev/third_party/rust/backtrace
Kartikaya Gupta 47c3dd535d Bug 1369156 - Re-vendor third-party rust libraries with latest cargo-vendor. r=froydnj
MozReview-Commit-ID: LQicTh0fmk0

--HG--
extra : rebase_source : 7a5ee9c3242fefa72e8d0372b8e9c03170c7df4b
2017-06-20 16:05:17 -04:00
..
examples
src
tests
.cargo-checksum.json
.cargo-ok
.travis.yml
Cargo.toml
LICENSE-APACHE
LICENSE-MIT
README.md
appveyor.yml

README.md

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

backtrace-rs is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0), with portions covered by various BSD-like licenses.

See LICENSE-APACHE, and LICENSE-MIT for details.