The best short introduction to the DWARF format available online is this PDF by Michael J. Eager. It's hosted on the page and also pointed to by the Wikipedia entry on DWARF. While certainly a well-written paper that serves as a solid introduction to DWARF, it unfortunately contains some errors in the final table which summarizes all DWARF sections in an ELF file, with their contents.

For reference, here are the correct descriptions. The sections are sorted in alphabetic order:

  • .debug_abbrev - Abbreviations used in the .debug_info section
  • .debug_aranges - Lookup table for mapping addresses to compilation units
  • .debug_frame - Call frame information
  • .debug_info - The core DWARF information section
  • .debug_line - Line number information
  • .debug_loc - Location lists used in DW_AT_location attributes
  • .debug_macinfo - Macro information
  • .debug_pubnames - Lookup table for mapping object and function names to compilation units
  • .debug_pubtypes - Lookup table for mapping type names to compilation units
  • .debug_ranges - Address ranges used in DW_AT_ranges attributes
  • .debug_str - String table used in .debug_info