Awesome
addr2line
addr2line
provides a cross-platform library for retrieving per-address debug information
from files with DWARF debug information. Given an address, it can return the file name,
line number, and function name associated with that address, as well as the inline call
stack leading to that address.
The crate has a CLI wrapper around the library which provides some of
the functionality of the addr2line
command line tool distributed with
GNU binutils.
Quickstart
- Add the
addr2line
crate to yourCargo.toml
. - Call
addr2line::Loader::new
with the file path. - Use
addr2line::Loader::find_location
oraddr2line::Loader::find_frames
to look up debug information for an address.
If you want to provide your own file loading and memory management, use
addr2line::Context
instead of addr2line::Loader
.
Performance
addr2line
optimizes for speed over memory by caching parsed information.
The DWARF information is parsed lazily where possible.
The library aims to perform similarly to equivalent existing tools such
as addr2line
from binutils, eu-addr2line
from elfutils, and
llvm-addr2line
from the llvm project. Current benchmarks show a performance
improvement in all cases:
License
Licensed under either of
- Apache License, Version 2.0 (
LICENSE-APACHE
or https://www.apache.org/licenses/LICENSE-2.0) - MIT license (
LICENSE-MIT
or https://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.