gimli-rs/gimli

A library for reading and writing the DWARF debugging format

1,010

stars

1,587

commits

Rust

primary language

Sep 4, 2026

updated

docs.rs/gimli/
cross-platform
dwarf
rust

README

gimli

Build Status Coverage Status

gimli is a library for reading and writing 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 macOS.

    • Unsure which object file parser to use? Try the cross-platform object crate. See the gimli-examples crate for usage with gimli.

Install

To add a gimli dependency to your Cargo.toml, run:

$ cargo add gimli

The minimum supported Rust version is 1.88.

Documentation

License

Licensed under either of

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.

Contributors

(top 30 of 79)

philipc

872 commits

fitzgen

414 commits

khuey

73 commits

rocallahan

20 commits

gimli-rs/gimli

A library for reading and writing the DWARF debugging format

1,010

stars

1,587

commits

Rust

primary language

Sep 4, 2026

updated

docs.rs/gimli/
cross-platform
dwarf
rust

README

gimli

Build Status Coverage Status

gimli is a library for reading and writing 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 macOS.

    • Unsure which object file parser to use? Try the cross-platform object crate. See the gimli-examples crate for usage with gimli.

Install

To add a gimli dependency to your Cargo.toml, run:

$ cargo add gimli

The minimum supported Rust version is 1.88.

Documentation

License

Licensed under either of

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.

Contributors

(top 30 of 79)

philipc

872 commits

fitzgen

414 commits

khuey

73 commits

rocallahan

20 commits

Languages

Rust

100.0%