A debugging data format is a means of storing information about a compiled computer program for use by high-level debuggers. Modern debugging data formats store enough information to allow source-level debugging.
High-level debuggers need information about variables, types, constants, subroutines and so on, so they can translate between machine-level storage and source language constructs. Such information can also be used by other software tools. The information must be generated by the compiler and stored in the executable file or dynamic library by the linker.
Some object file formats include debugging information, but others can use generic debugging data formats such as stabs and DWARF.