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 uses DW_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 OSX.
Add this to your Cargo.toml
:
toml
[dependencies]
gimli = "0.19.0"
The minimum supported rust version is 1.32.0.
Example programs:
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 (via DW_AT_producer
)
dwarf-validate
, a program to validate the
integrity of some DWARF and its references between sections and ocmpilation
units.
Licensed under either of
LICENSE-APACHE
or http://www.apache.org/licenses/LICENSE-2.0)LICENSE-MIT
or http://opensource.org/licenses/MIT)at your option.
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.