Crate backtrace[][src]

A library for acquiring a backtrace at runtime

This library is meant to supplement the RUST_BACKTRACE=1 support of the standard library by allowing an acquisition of a backtrace at runtime programmatically. The backtraces generated by this library do not need to be parsed, for example, and expose the functionality of multiple backend implementations.

Usage

First, add this to your Cargo.toml

[dependencies]
backtrace = "0.3"

Next:

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_frame(frame, |symbol| {
            if let Some(name) = symbol.name() {
                // ...
            }
            if let Some(filename) = symbol.filename() {
                // ...
            }
        });

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

Structs

Backtrace

Representation of an owned and self-contained backtrace.

BacktraceFmt

A formatter for backtraces.

BacktraceFrame

Captured version of a frame in a backtrace.

BacktraceFrameFmt

A formatter for just one frame of a backtrace.

BacktraceSymbol

Captured version of a symbol in a backtrace.

Frame

A trait representing one frame of a backtrace, yielded to the trace function of this crate.

Symbol

A trait representing the resolution of a symbol in a file.

SymbolName

A wrapper around a symbol name to provide ergonomic accessors to the demangled name, the raw bytes, the raw string, etc.

Enums

BytesOrWideString

A platform independent representation of a string. When working with std enabled it is recommended to the convenience methods for providing conversions to std types.

PrintFmt

The styles of printing that we can print

Functions

clear_symbol_cache

Attempt to reclaim that cached memory used to symbolicate addresses.

resolve

Resolve an address to a symbol, passing the symbol to the specified closure.

resolve_frame

Resolve a previously capture frame to a symbol, passing the symbol to the specified closure.

resolve_frame_unsynchronized

Same as resolve_frame, only unsafe as it’s unsynchronized.

resolve_unsynchronized

Same as resolve, only unsafe as it’s unsynchronized.

trace

Inspects the current call-stack, passing all active frames into the closure provided to calculate a stack trace.

trace_unsynchronized

Same as trace, only unsafe as it’s unsynchronized.