yasm_dbgfmts(7) Yasm Supported Debugging Formats


yasm -g dbgfmt ...


The standard Yasm distribution includes a number of modules for different debugging formats. The debugging information is embedded into the object file. Use of a non-"null" debug format also causes Yasm to output all symbols to the object file (including local symbols).

The debug format is selected on the yasm(1) command line by use of the -g dbgfmt command line option.


The CV8 debug format is used by Microsoft Visual Studio 2005 (version 8.0) and is completely undocumented, although it bears strong similarities to earlier CodeView formats. Yasm's support for the CV8 debug format is currently limited to generating assembly-level line number information (to allow some level of source-level debugging). The CV8 debug information is stored in the .debug$S and .debug$T sections of the Win64 object file.


The DWARF 2 debug format is a complex, well-documented standard for debugging information. It was created to overcome shortcomings in STABS, allowing for much more detailed and compact descriptions of data structures, data variable movement, and complex language structures such as in C++. The debugging information is stored in sections (just like normal program sections) in the object file. Yasm supports full pass-through of DWARF2 debugging information (e.g. from a C++ compiler), and can also generate assembly-level line number information.


The "null" debug format is a placeholder; it adds no debugging information to the output file.


The STABS debug format is a poorly documented, semi-standard format for debugging information in COFF and ELF object files. The debugging information is stored as part of the object file's symbol table and thus is limited in complexity and scope. Despite this, STABS is a common debugging format on older Unix and compatible systems, as well as DJGPP.


Peter Johnson <[email protected]>



Copyright © 2006 Peter Johnson