From wiki.dwarfstd.org
Revision as of 14:01, 9 February 2007 by >Eager
Jump to navigation Jump to search
  1. What is DWARF?
    • DWARF is a debugging format used to describe programs in C and other similar programming languages. It is most widely associated with the ELF object format but it has been used with other object file formats.
  2. Why is it called DWARF? And why isn't it spelled "Dwarf"?
    • It's a pun, since it was developed along with ELF, the Executable and Linking Format (nee Extensible Linking Format). Brian Russell, the original developer of DWARF, christened it the "Debugging With Attributed Record Formats".
  3. Where did DWARF come from?
    • DWARF was orginally developed by Bell Labs for use with the System V debugger named sdb. This format was standardized as DWARF v. 1.0 by the PLSIG (Programming Languages Special Interest Group) of Unix International.
  4. How can I submit a proposal to change or extend the dwarf-specificiation?
  5. Is there a movement from proceedural languages to non-proceedural languages in today's application context?
    • No. DWARF is designed to describe compiled procedural languages such as C, C++, Java, Fortran, and similar languages.
  6. What advantages does DWARF have over STABS?
    • DWARF is a block structured and extensible description of a program's source and how it is translated into executable code. It's easy to add new descriptions or extend the descriptions in DWARF.
    • STABS is much more restricted in it's expressive abilities. It depends on predefined symbol and type definitions and is not easily modified or extended.
    • Additionally, DWARF has facilities for describing a more complex execution environment, such as discontiguous scopes, stack structures, and stack unwinding, which STABS cannot.
  7. Is there an archive for the previous mailing list hosted by SGI?
    • Yes. You can find it here.
  8. How many DW_TAG_compile_unit entries per Compilation Unit Header?
    • Each Compilation Unit Header should be followed by exactly one DW_TAG_compile_unit or one DW_TAG_partial_unit, and the children of the DW_TAG_compile_unit or DW_TAG_partial_unit contain Debugging Information Entries for the unit. A DW_TAG_compile_unit or DW_TAG_partial_unit has no sibling entries.
  9. Why doesn't the line table 'basic block' register have a reset operation?
    • It doesn't need one.
      The table is based on creating row entries, conceptually a row entry for every pc value in the executable text. All the booleans in the line table, such as is_stmt, basic_block, end_sequence, prologue_end, and epilogue_begin are reset by the creation of a new row in the table (see the individual opcodes that create table rows to see this). Each row in the line table is defined by a sequence of one or more line table opcodes and the opcodes precisely define the value of every column of every row.
  10. How big is a DW_FORM_ref_addr?
    • In DWARF3, DW_FORM_ref_addr is clearly defined as being an offset into the .debug_info section so the reference value is the size of an offset. In DWARF2 DW_FORM_ref_addr was (confusingly) defined as being the size of an address on the target machine. The DWARF2 definition never made any sense and was a mistake in the DWARF2 specification: the field DW_FORM_ref_addr defines is an offset, not an address.
      Whether producing DWARF2 or DWARF3, please use the DWARF3 definition of DW_FORM_ref_addr.
  11. What is a state machine which is used to decode the byte stream of line and file debug information?
  12. What is the basic logic behind the extended, standard and special opcodes?
  13. Is there a posibility to download a C source code to parse a DWARF-2 file?
  14. Where do you find examples in C and other langs of using the exception handling and other features. Great for programmers to be able to look at working examples.
  15. How can i parse the sections of .debug_info and .debug_abbrev whitch are belong in a file format?
  16. Are there any tools available for editing, compacting, or selectivly removing DWARF symbols from object files?
  17. Why does my debugger quit soon as I start debugging?
    • Please contact your debugger supplier.
  18. Is there any software that can read DWARF data and output the size and offset of struct fields (and class data members)?
  19. Where can I find a reference of the Dwarf debugging symbols produced by a GCC compiler on various platforms?
    • For information about how GCC or any other compiler implements DWARF, please contact the developer or distributor for that compiler.
  20. Does visual studio .net support the DWARF debugging standard?
  21. Is DWARF associated with XCOFF object format?
  22. What's the best C* DWARF WRITER (API) around?
  23. What is the Software Licensing Agreement for DWARF?
  24. Is it possible to access local or global variables(i.e. getting their stored values) of a running program without stopping its execution using its debugging information?
  25. You write that the DWARF standard (I mean the text) is under GNU FDL,

but if you read read GNU FDL, you should have noticed that when something is released under GNU FDL it should be written in something which is widespread or at least readable as plain text.