DWARF Debugging Standard
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)
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.
Related Specs
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.
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.