YASM_DBGFMTS(7)
β¨ YASM_DBGFMTS β¨
okay bestie, welcome to the debug-format lore drop π this is the yasm_dbgfmts page from the Yasm manual, and it's basically the group chat where all the debugging formats get introduced. let's get into it π¦
πΈ SYNOPSIS πΈ
yasm -g dbgfmt ...
that's the whole vibe right there. -g dbgfmt, then whatever else you were gonna do. slay.
π DESCRIPTION π
so the standard Yasm distribution ships with a whole lil collection of modules, one for each different debugging format out there. the debugging info gets embedded right into the object file itself, no cap. and here's the tea: if you pick a debug format that isn't the "null" one, Yasm also starts outputting all the symbols into the object file β yes, including the local ones. all of them. the whole friend group π
you pick your format on the yasm(1) command line with the -g dbgfmt option. that's it, that's the selector π
π CV8 π
the CV8 debug format is what Microsoft Visual Studio 2005 (version 8.0) uses, and it is completely undocumented π like, nobody wrote it down. it does bear strong similarities to the earlier CodeView formats though, so it's giving "we know the family, just not this specific cousin."
Yasm's support for CV8 is currently limited β it only generates assembly-level line number information (which lets you do some level of source-level debugging, better than nothing bestie π«Ά).
where does it live? in the .debug$S and .debug$T sections of the Win64 object file. noted. memorized. β¨
π§ DWARF2 π§
DWARF 2 is a complex, well-documented standard for debugging information β highkey the main character of debug formats π. it was created to overcome the shortcomings of STABS, and it allows for much more detailed and compact descriptions of:
- data structures
- data variable movement
- complex language structures, such as those in C++
the debugging information is stored in sections β just like normal program sections β inside the object file. and Yasm supports full pass-through of DWARF2 debugging information (like, say, the stuff coming out of a C++ compiler), and it can also generate assembly-level line number information. versatile queen π
π NULL π
the "null" debug format is literally just a placeholder. it adds no debugging information to the output file. that's it. that's the whole personality. sometimes you just want nothing and that's valid π«§
π STABS π
the STABS debug format is a poorly documented, semi-standard format for debugging information in COFF and ELF object files. ngl, the vibe is "we made this up and moved on" π
the debugging information is stored as part of the object file's symbol table, which means it's limited in complexity and scope. like, it can only do so much.
but despite all that β STABS is a common debugging format on older Unix and compatible systems, and also on DJGPP. so it's got seniority, respect the elders π
π SEE ALSO π
β AUTHOR β
Peter Johnson <peter@tortall.net> Author.
π COPYRIGHT π
Copyright Β© 2006 Peter Johnson
okay that's the whole page bestie, you're officially educated on debug formats ππ sending you so much love β this was brought to you by Yasm, from October 2006, and the page is YASM_DBGFMTS(7). go debug something iconic πβ¨
π¦ where this page comes from
- alpine 3.24: yasm-doc 1.3.0-r4 Β· BSD-2-Clause
- arch rolling: yasm 1.3.0-9 Β· BSD-2-Clause OR BSD-3-Clause AND GPL-2.0-only AND LGPL-2.1-only AND Artistic-1.0-Perl
- debian bookworm: yasm 1.3.0-4
- debian trixie: yasm 1.3.0-7
- epel 10: yasm-devel 1.3.0^20250625git121ab15-1.el10_1 Β· BSD-2-Clause AND BSD-3-Clause AND (GPL-1.0-or-later AND GPL-2.0-or-later OR Artistic-1.0-Perl OR LGPL-2.0-or-later)
- epel 9: yasm-devel 1.3.0^20250625git121ab15-1.el9 Β· BSD-2-Clause AND BSD-3-Clause AND (GPL-1.0-or-later AND GPL-2.0-or-later OR Artistic-1.0-Perl OR LGPL-2.0-or-later)
- fedora 43: yasm-devel 1.3.0^20250625git121ab15-3.fc43 Β· BSD-2-Clause AND BSD-3-Clause AND (GPL-1.0-or-later AND GPL-2.0-or-later OR Artistic-1.0-Perl OR LGPL-2.0-or-later)
- fedora 43: yasm-devel 1.3.0^20250625git121ab15-3.fc43 Β· BSD-2-Clause AND BSD-3-Clause AND (GPL-1.0-or-later AND GPL-2.0-or-later OR Artistic-1.0-Perl OR LGPL-2.0-or-later)
- fedora 44: yasm-devel 1.3.0^20250625git121ab15-3.fc44 Β· BSD-2-Clause AND BSD-3-Clause AND (GPL-1.0-or-later AND GPL-2.0-or-later OR Artistic-1.0-Perl OR LGPL-2.0-or-later)
- fedora 44: yasm-devel 1.3.0^20250625git121ab15-3.fc44 Β· BSD-2-Clause AND BSD-3-Clause AND (GPL-1.0-or-later AND GPL-2.0-or-later OR Artistic-1.0-Perl OR LGPL-2.0-or-later)
- nixos 26.05: yasm 1.3.0
- nixpkgs unstable: yasm 1.3.0
- opensuse-leap 16.0: yasm 1.3.0-160000.2.2 Β· Artistic-1.0 AND BSD-2-Clause AND BSD-3-Clause AND GPL-2.0-or-later AND LGPL-2.0-or-later
- opensuse-leap 16.0: yasm 1.3.0-160000.2.2 Β· Artistic-1.0 AND BSD-2-Clause AND BSD-3-Clause AND GPL-2.0-or-later AND LGPL-2.0-or-later
- opensuse-leap 16.0: yasm 1.3.0-160000.2.2 Β· Artistic-1.0 AND BSD-2-Clause AND BSD-3-Clause AND GPL-2.0-or-later AND LGPL-2.0-or-later
- opensuse-leap 16.0: yasm 1.3.0-160000.2.2 Β· Artistic-1.0 AND BSD-2-Clause AND BSD-3-Clause AND GPL-2.0-or-later AND LGPL-2.0-or-later
- ubuntu jammy: yasm 1.3.0-2.1
- ubuntu noble: yasm 1.3.0-4
- ubuntu questing: yasm 1.3.0-7
- ubuntu resolute: yasm 1.3.0-8
- ubuntu stonking: yasm 1.3.0-8
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms