DWARF
From Wikipedia, the free encyclopedia
DWARF is a widely used, standardized debugging data format. DWARF was originally designed along with ELF, although it is independent of object file formats.[1] The name is a pun on "ELF" that has no official meaning but "may be an acronym for 'Debug With Attributed Record Format'".[1]
Contents |
[edit] History
The first version of DWARF proved to use excessive amounts of storage, and it was superseded by an incompatible successor DWARF-2, which added various encoding schemes to reduce data size. DWARF was not immediately successful; for instance, when Sun Microsystems adopted ELF as part of their move to Solaris, they opted to continue using stabs, in an embedding known as "stabs-in-elf". Linux followed suit, and DWARF-2 did not become the default until the late 1990s. DWARF version 3, which was released in January 2006,[2] adds (among other things) support for C++ namespaces, Fortran 90 allocatable data and additional compiler optimization techniques.
Michael Eager, chair of the DWARF Standards Committee, has written a useful introduction to debugging formats and DWARF 3, Introduction to the DWARF Debugging Format.[1]
[edit] Structure
DWARF uses a data structure called a Debugging Information Entry (DIE) to represent each variable, type, procedure, etc. A DIE has a tag (eg., DW_TAG_variable, DW_TAG_pointer_type, DW_TAG_subprogram) and attributes (key-value pairs), A DIE can have nested (child) DIEs, forming a tree structure. A DIE attribute can refer to another DIE anywhere in the tree — for instance, a DIE representing a variable would have a DW_AT_type entry pointing to the DIE describing the variable's type.
To save space, two large tables needed by symbolic debuggers are represented as byte-coded instructions for simple, special-purpose finite state machines. The Line Number Table, which maps code locations to source code locations and vice versa, also specifies which instructions are part of function prologues and epilogues. The Call Frame Information table allows debuggers to locate frames on the call stack.
[edit] References
- ^ a b c Michael J. Eager (February 2007). Introduction to the DWARF Debugging Format. Retrieved on 2007-06-25.
- ^ Free Standards Group (January 4, 2006). "DWARF Version 3 Standard Released". Press release. Retrieved on 2007-06-25.
[edit] See also
- stabs - Symbol TABle entrieS debugging format
[edit] External links
- Standards:
- Tools:
- Articles: