1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
//! [Symbolic](https://docs.rs/symbolic) is a library written in Rust which is used at
//! [Sentry](https://sentry.io/) to implement symbolication of native stack traces, sourcemap
//! handling for minified JavaScript and more. It consists of multiple largely independent crates
//! which are bundled together into a C and Python library so it can be used independently of Rust.
//!
//! # What's in the package
//!
//! Symbolic provides the following functionality:
//!
//! - Symbolication based on custom cache files (symcache)
//! - Symbol cache file generators from:
//!   - Mach, ELF and PE symbol tables
//!   - Mach and ELF embedded DWARF data
//!   - PDB CodeView debug information
//!   - Breakpad symbol files
//! - Demangling support
//!   - C++ (GCC, clang and MSVC)
//!   - Objective C / Objective C++
//!   - Rust
//!   - Swift
//! - JavaScript sourcemap expansion
//!   - Basic token mapping
//!   - Heuristics to find original function names based on minified sources
//!   - Indexed sourcemap to sourcemap merging
//! - Proguard function mappings (via `symbolic-cabi` only, use `proguard` crate instead)
//! - Minidump / Breakpad processing
//!   - Generate Breakpad symbol files from Mach, ELF and PDBs
//!   - Process Minidumps to retrieve stack traces
//! - Convenient C and Python library
//! - Processing of Unreal Engine 4 native crash reports
//!   - Extract and process minidumps
//!   - Expose logs and UE4 context information
//!
//! # Usage
//!
//! Add `symbolic` as a dependency to your `Cargo.toml`. You will most likely want to activate some
//! of the features:
//!
//! - **`debuginfo`** (default): Contains support for various object file formats and debugging
//!   information. Currently, this comprises MachO and ELF (with DWARF debugging), PE and PDB, as
//!   well as Breakpad symbols.
//! - **`demangle`**: Demangling for Rust, C++, Swift and Objective C symbols. This feature requires
//!   a C++14 compiler on the PATH.
//! - **`minidump`**: Rust bindings for the Breakpad Minidump processor. Additionally, this includes
//!   facilities to extract stack unwinding information (sometimes called CFI) from object files.
//!   This feature requires a C++11 compiler on the PATH.
//! - **`sourcemap`**: Processing and expansion of JavaScript source maps, as well as lookups for
//!   minified function names.
//! - **`symcache`**: An optimized, platform-independent storage for common debugging information.
//!   This allows blazing fast symbolication of instruction addresses to function names and file
//!   locations.
//! - **`unreal`**: Processing of Unreal Engine 4 crash reports.
//!
//! There are also alternate versions for some of the above features that additionally add
//! implementations for `serde::{Deserialize, Serialize}` on suitable types:
//!
//! - **`common-serde`**
//! - **`debuginfo-serde`**
//! - **`minidump-serde`**
//! - **`unreal-serde`**

#![warn(missing_docs)]

#[doc(inline)]
pub use symbolic_common as common;
#[doc(inline)]
#[cfg(feature = "debuginfo")]
pub use symbolic_debuginfo as debuginfo;
#[doc(inline)]
#[cfg(feature = "demangle")]
pub use symbolic_demangle as demangle;
#[doc(inline)]
#[cfg(feature = "minidump")]
pub use symbolic_minidump as minidump;
#[doc(inline)]
#[cfg(feature = "sourcemap")]
pub use symbolic_sourcemap as sourcemap;
#[doc(inline)]
#[cfg(feature = "symcache")]
pub use symbolic_symcache as symcache;
#[doc(inline)]
#[cfg(feature = "unreal")]
pub use symbolic_unreal as unreal;