backtrace 0.3.5

A library to acquire a stack trace (backtrace) at runtime in a Rust program.
Documentation
[package]
name = "backtrace"
version = "0.3.5"
authors = ["Alex Crichton <alex@alexcrichton.com>",
           "The Rust Project Developers"]
license = "MIT/Apache-2.0"
readme = "README.md"
repository = "https://github.com/alexcrichton/backtrace-rs"
homepage = "https://github.com/alexcrichton/backtrace-rs"
documentation = "http://alexcrichton.com/backtrace-rs"
description = """
A library to acquire a stack trace (backtrace) at runtime in a Rust program.
"""
[dependencies]
cfg-if = "0.1"
rustc-demangle = "0.1.4"

# Optionally enable the ability to serialize a `Backtrace`
serde = { version = "1.0", optional = true }
serde_derive = { version = "1.0", optional = true }
rustc-serialize = { version = "0.3", optional = true }

# Optionally demangle C++ frames' symbols in backtraces.
cpp_demangle = { default-features = false, version = "0.2.3", optional = true }

addr2line = { version = "0.5.0", optional = true }
findshlibs = { version = "0.3.3", optional = true }

[target.'cfg(unix)'.dependencies]
libc = "0.2"

[target.'cfg(windows)'.dependencies]
winapi = { version = "0.3.3", optional = true, features = ["std", "dbghelp", "processthreadsapi", "winnt", "minwindef"] }

[target.'cfg(all(unix, not(target_os = "fuchsia"), not(target_os = "emscripten"), not(target_os = "macos"), not(target_os = "ios")))'.dependencies]
backtrace-sys = { path = "backtrace-sys", version = "0.1.3", optional = true }

# Each feature controls the two phases of finding a backtrace: getting a
# backtrace and then resolving instruction pointers to symbols. The default
# feature enables all the necessary features for each platform this library
# supports, but it can be disabled to have finer grained control over the
# dependencies.
#
# Note that not all features are available on all platforms, so even though a
# feature is enabled some other feature may be used instead.
[features]
default = ["libunwind", "libbacktrace", "coresymbolication", "dladdr", "dbghelp"]

    #=======================================
    # Methods of acquiring a backtrace
    #
    # - libunwind: when using this the libgcc library is linked against to get
    #   the unwinding support. This is generally the most reliable method to get
    #   a backtrace on unix.
    # - unix-backtrace: this uses the backtrace(3) function to acquire a
    #   backtrace, but is not as reliable as libunwind. It is, however,
    #   generally found in more locations.
    # - dbghelp: on windows this enables usage of dbghelp.dll to find a
    #   backtrace at runtime
    # - kernel32: on windows this enables using RtlCaptureStackBackTrace as the
    #   function to acquire a backtrace
    libunwind = []
    unix-backtrace = []
    dbghelp = ["winapi"]
    kernel32 = []

    #=======================================
    # Methods of resolving symbols
    #
    # - libbacktrace: this feature activates the `backtrace-sys` dependency,
    #   building the libbacktrace library found in gcc repos. This library
    #   parses the DWARF info of ELF executables to find symbol names, and it
    #   can also provide filename/line number information if debuginfo is
    #   compiled in. This library currently only primarily works on unixes that
    #   are not OSX, however.
    # - dladdr: this feature uses the dladdr(3) function (a glibc extension) to
    #   resolve symbol names. This is fairly unreliable on linux, but works well
    #   enough on OSX.
    # - coresymbolication: this feature uses the undocumented core symbolication
    #   framework on OS X to symbolize.
    # - gimli-symbolize: use the `gimli-rs/addr2line` crate to symbolicate
    #   addresses into file, line, and name using DWARF debug information. At
    #   the moment, this is only possible when targetting Linux, since macOS
    #   splits DWARF out into a separate object file. Enabling this feature
    #   means one less C dependency.
    libbacktrace = ["backtrace-sys"]
    dladdr = []
    coresymbolication = []
    gimli-symbolize = ["addr2line", "findshlibs"]

    #=======================================
    # Methods of serialization
    #
    # Various features used for enabling rustc-serialize or syntex codegen.
    serialize-rustc = ["rustc-serialize"]
    serialize-serde = ["serde", "serde_derive"]