gimli
gimli copied to clipboard
A library for reading and writing the DWARF debugging format
gimli
gimli
is a blazing fast library for consuming the
DWARF debugging format.
-
Zero copy: everything is just a reference to the original input buffer. No copies of the input data get made.
-
Lazy: you can iterate compilation units without parsing their contents. Parse only as many debugging information entry (DIE) trees as you iterate over.
gimli
also usesDW_AT_sibling
references to avoid parsing a DIE's children to find its next sibling, when possible. -
Cross-platform:
gimli
makes no assumptions about what kind of object file you're working with. The flipside to that is that it's up to you to provide an ELF loader on Linux or Mach-O loader on macOS.- Unsure which object file parser to use? Try the cross-platform
object
crate. See theexamples/
directory for usage withgimli
.
- Unsure which object file parser to use? Try the cross-platform
Install
Add this to your Cargo.toml
:
[dependencies]
gimli = "0.26.2"
The minimum supported Rust version is 1.42.0.
Documentation
-
Example programs:
-
A simple
.debug_info
parser -
A simple
.debug_line
parser -
A
dwarfdump
clone -
ddbug
, a utility giving insight into code generation by making debugging information readable. -
dwprod
, a tiny utility to list the compilers used to create each compilation unit within a shared library or executable (viaDW_AT_producer
). -
dwarf-validate
, a program to validate the integrity of some DWARF and its references between sections and compilation units.
-
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.
Contribution
See CONTRIBUTING.md for hacking.
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.