All specs
DWARF 5DWARFNicheSystems2017

DWARF Debugging Standard

OS Interfaces & ABIs·DWARF Standards Committee
WHY YOU NEED THIS

Every debugger, profiler, crash reporter, and sanitizer on Linux/macOS reads DWARF. Understanding it is critical for improving build-time debug quality, diagnosing toolchain issues, and building custom binary analysis tools.

What It Defines

Defines the debugging information format embedded in ELF (and PE/COFF) binaries. DWARF encodes variable types and locations, function signatures, inlined function expansions, source file and line number mappings, call frame information (CFI) for stack unwinding, and abstract instance trees for complex templates. DWARF 5 (2017) adds improved compression, split DWARF for faster incremental builds, and new location list forms.

Canonical (Normative)

Convenient (Practical)

dwarfdebuggingdebug-infoelflldbgdbstack-unwindingcfi
Standards Body
DWARF Standards Committee

Informal committee (operating under the Free Standards Group / Linux Foundation umbrella) that maintains the DWARF Debugging Information Format standard. DWARF is the debug info format embedded in ELF binaries and used by GDB, LLDB, Valgrind, perf, crash reporters, and sanitizers. DWARF 5 (2017) is the current version.

Visit

Related Specs

Linux FdnShould Know

ELF

Every compiled binary on Linux is ELF. Understanding ELF is essential for debugging, reverse engineering, dynamic linking, build toolchains, binary patching, and tools like readelf, objdump, ldd, and patchelf.

SystemsOS Interfaces & ABIs
Details
IEEE Std 1003.1-2017Open GroupMust Know

POSIX

POSIX defines the lingua franca of Unix/Linux systems programming. Every system call pattern, signal handler, file descriptor idiom, and shell script convention in the Linux/macOS world comes from this spec.

SystemsProductOS Interfaces & ABIs
Details