dwarf-expert
trailofbits/skills
Analyze and understand DWARF debug information (v3-v5) in compiled binaries.
What is dwarf-expert?
This skill provides technical expertise for working with DWARF debug files and the DWARF standard (versions 3-5). Use it when parsing debug information from binaries, answering questions about the DWARF specification, writing code that interacts with DWARF data, or verifying debug info integrity.
- Answer questions about DWARF standard (v3, v4, v5) specifications and features
- Parse and analyze DWARF debug information from compiled binaries using dwarfdump and readelf
- Verify DWARF data integrity and quality with llvm-dwarfdump verification workflows
- Write, review, and modify code that parses or interacts with DWARF data
- Extract and search DWARF DIE nodes and debug information structures
How to install dwarf-expert
npx skills add https://github.com/trailofbits/skills --skill dwarf-expert- llvm-dwarfdump, dwarfdump, or readelf installed for parsing DWARF files
- ELF binaries with DWARF debug information (v3-v5)
How to use dwarf-expert
- 1.Identify the task: verify DWARF integrity, parse debug info, answer spec questions, or write DWARF-aware code
- 2.For verification: run llvm-dwarfdump --verify on your binary to check structural validity
- 3.For parsing: use dwarfdump for DWARF-specific queries or readelf for general ELF information
- 4.For standard questions: search dwarfstd.org or reference LLVM/libdwarf implementations
- 5.For coding tasks: consult the coding reference for DWARF parsing libraries and patterns
Use cases
- Extracting debug symbols and type information from compiled binaries for analysis tools
- Verifying DWARF data integrity before distributing binaries or comparing debug info quality across compiler versions
- Writing parsers or tools that need to read DWARF debug sections from ELF files
- Debugging issues where malformed DWARF causes debugger failures
- Understanding DWARF structure and attributes when implementing DWARF-aware tooling
- Compiler engineers working with debug information generation
- Binary analysis and tooling developers
- Reverse engineers analyzing debug symbols in binaries
- QA engineers verifying debug info quality
- Tool developers building DWARF parsers or debuggers
dwarf-expert FAQ
Versions 3, 4, and 5. DWARF v1/v2 analysis is not supported; use other tools for those versions.
No. Use dedicated debuggers like gdb or lldb for runtime debugging. This skill is for analyzing DWARF debug information itself, not executing code.
No. Compiler-specific DWARF generation problems are outside this skill's scope. This covers analyzing and parsing existing DWARF data.
Use dwarfdump for DWARF-specific parsing and readelf for general ELF information. For verification, use llvm-dwarfdump --verify.
Yes. The skill supports writing, modifying, and reviewing code that interacts with DWARF data, including code using libraries like libdwarf, pyelftools, and gimli.
Full instructions (SKILL.md)
Source of truth, from trailofbits/skills.
name: dwarf-expert description: Provides expertise for analyzing DWARF debug files and understanding the DWARF debug format/standard (v3-v5). Triggers when understanding DWARF information, interacting with DWARF files, answering DWARF-related questions, or working with code that parses DWARF data. allowed-tools: Read Bash Grep Glob WebSearch
Overview
This skill provides technical knowledge and expertise about the DWARF standard and how to interact with DWARF files. Tasks include answering questions about the DWARF standard, providing examples of various DWARF features, parsing and/or creating DWARF files, and writing/modifying/analyzing code that interacts with DWARF data.
When to Use This Skill
- Understanding or parsing DWARF debug information from compiled binaries
- Answering questions about the DWARF standard (v3, v4, v5)
- Writing or reviewing code that interacts with DWARF data
- Using
dwarfdumporreadelfto extract debug information - Verifying DWARF data integrity with
llvm-dwarfdump --verify - Working with DWARF parsing libraries (libdwarf, pyelftools, gimli, etc.)
When NOT to Use This Skill
- DWARF v1/v2 Analysis: Expertise limited to versions 3, 4, and 5.
- General ELF Parsing: Use standard ELF tools if DWARF data isn't needed.
- Executable Debugging: Use dedicated debugging tools (gdb, lldb, etc) for debugging executable code/runtime behavior.
- Binary Reverse Engineering: Use dedicated RE tools (Ghidra, IDA) unless specifically analyzing DWARF sections.
- Compiler Debugging: DWARF generation issues are compiler-specific, not covered here.
Authoritative Sources
When specific DWARF standard information is needed, use these authoritative sources:
-
Official DWARF Standards (dwarfstd.org): Use web search to find specific sections of the official DWARF specification at dwarfstd.org. Search queries like "DWARF5 DW_TAG_subprogram attributes site:dwarfstd.org" are effective.
-
LLVM DWARF Implementation: The LLVM project's DWARF handling code at
llvm/lib/DebugInfo/DWARF/serves as a reliable reference implementation. Key files include:DWARFDie.cpp- DIE handling and attribute accessDWARFUnit.cpp- Compilation unit parsingDWARFDebugLine.cpp- Line number informationDWARFVerifier.cpp- Validation logic
-
libdwarf: The reference C implementation at github.com/davea42/libdwarf-code provides detailed handling of DWARF data structures.
Verification Workflows
Use llvm-dwarfdump verification options to validate DWARF data integrity:
Structural Validation
# Verify DWARF structure (compile units, DIE relationships, address ranges)
llvm-dwarfdump --verify <binary>
# Detailed error output with summary
llvm-dwarfdump --verify --error-display=full <binary>
# Machine-readable JSON error summary
llvm-dwarfdump --verify --verify-json=errors.json <binary>
Quality Metrics
# Output debug info quality metrics as JSON
llvm-dwarfdump --statistics <binary>
The --statistics output helps compare debug info quality across compiler versions and optimization levels.
Common Verification Patterns
- After compilation: Verify binaries have valid DWARF before distribution
- Comparing builds: Use
--statisticsto detect debug info quality regressions - Debugging debuggers: Identify malformed DWARF causing debugger issues
- DWARF tool development: Validate parser output against known-good binaries
Parsing DWARF Debug Information
readelf
ELF files can be parsed via the readelf command ({baseDir}/reference/readelf.md). Use this for general ELF information, but prefer dwarfdump for DWARF-specific parsing.
dwarfdump
DWARF files can be parsed via the dwarfdump command, which is more effective at parsing and displaying complex DWARF information than readelf and should be used for most DWARF parsing tasks ({baseDir}/reference/dwarfdump.md).
Working With Code
This skill supports writing, modifying, and reviewing code that interacts with DWARF data. This may involve code that parses DWARF debug data from scratch or code that leverages libraries to parse and interact with DWARF data ({baseDir}/reference/coding.md).
Choosing Your Approach
┌─ Need to verify DWARF data integrity?
│ └─ Use `llvm-dwarfdump --verify` (see Verification Workflows above)
├─ Need to answer questions about the DWARF standard?
│ └─ Search dwarfstd.org or reference LLVM/libdwarf source
├─ Need simple section dump or general ELF info?
│ └─ Use `readelf` ({baseDir}/reference/readelf.md)
├─ Need to parse, search, and/or dump DWARF DIE nodes?
│ └─ Use `dwarfdump` ({baseDir}/reference/dwarfdump.md)
└─ Need to write, modify, or review code that interacts with DWARF data?
└─ Refer to the coding reference ({baseDir}/reference/coding.md)
Related skills
More from trailofbits/skills and the wider catalog.

ask-questions-if-underspecified
Clarify underspecified requirements before implementing to avoid wrong work.

semgrep
Run Semgrep static analysis scans with parallel execution, language detection, and merged SARIF output.

modern-python
Configure Python projects with modern tooling: uv, ruff, and ty for fast, simple dependency and code quality management.

insecure-defaults
Detects fail-open insecure defaults that allow apps to run unsecurely in production without proper configuration.

codeql
Scan codebases for security vulnerabilities using CodeQL's interprocedural data flow and taint tracking analysis.

secure-workflow-guide
5-step secure development workflow for smart contracts: Slither scans, feature checks, visual diagrams, property documentation, and manual review.