COFF
COFFのシンボリックデバッグ情報は、プログラムの関数と変数の(文字による)シンボル名称と、実行のトレースやブレークポイントの設定に用いられる行番号情報からなっている。a.outは元々シンボリックデバッグ情報をサポートしていないが、スタブのような機構を用いることでこの欠点をある程度は克服することができた。
シンボル名称はCOFFのシンボルテーブルに格納される。シンボルテーブルの各エントリーには名前、記憶クラス、型、値およびセクション番号が含まれる。短い名前(8文字以下)はシンボルテーブルに直接格納され、長い名前はCOFFオブジェクトの末端にある文字列テーブルに対するオフセットとして格納される。
記憶クラスは外部変数(C_EXT)、自動(スタック)変数(C_AUTO)、レジスタ変数(C_REG)、関数(C_FCN)などのシンボルが表現する型の実体を示す。シンボルの種類はシンボルの実体の値を説明するもので、すべてのC言語のデータ型を含んでいる。
適切なオプションとともにコンパイルされた場合、COFFオブジェクトファイルはオブジェクトファイルのテキストセクションのとりうる各ブレークポイントの行番号情報を格納する。行番号情報は二つの形態をとる。一番目の形態では、コード内のとりうる各ブレークポイントについて、行番号のエントリーがアドレスと対応する行番号を格納する。二番目の形態では、関数の開始を示すシンボルテーブルのエントリーを識別し、関数の名前でブレークポイントを有効にする。