デバッグ ディレクトリのデバッグ タイプ フィールドのために以下の値が定義されています。
定数 値 解説 IMAGE_DEBUG_TYPE_UNKNOWN 0 未知の値。すべてのツールで無視されます。 IMAGE_DEBUG_TYPE_COFF 1 COFFデバッグ情報(行番号、シンボル テーブル、文字列テーブル)。このタイプのデバッグ情報はファイル ヘッダ内のフィールドによっても指し示されています。 IMAGE_DEBUG_TYPE_CODEVIEW 2 CodeViewデバッグ情報。データ ブロックの形式はCV4の仕様によって記述されています。 IMAGE_DEBUG_TYPE_FPO 3 フレームポインタ省略(FPO)情報。この情報は、EBPレジスタをフレーム ポインタ以外の目的で使う非標準のスタック フレームの解釈方法をデバッガに伝えます。 IMAGE_DEBUG_TYPE_MISC 4 IMAGE_DEBUG_TYPE_EXCEPTION 5 IMAGE_DEBUG_TYPE_FIXUP 6 IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7 IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8 IMAGE_DEBUG_TYPE_BORLAND 9 デバッグ タイプにIMAGE_DEBUG_TYPE_FPOがセットされている場合には、デバッグ生データは、各メンバが関数のスタック フレームを記述する配列です。デバッグタイプがFPOであても、イメージ ファイル中のすべての関数がそのために定義されたFPO情報を必要しているわけではありません。FPO情報を持たない関数は、通常のスタック フレームを持つものと仮定されます。FPO情報の形式は以下のように定義されています。
#define FRAME_FPO 0 #define FRAME_TRAP 1 #define FRAME_TSS 2 typedef struct _FPO_DATA { DWORD ulOffStart; // offset 1st byte of function code DWORD cbProcSize; // # bytes in function DWORD cdwLocals; // # bytes in locals/4 WORD cdwParams; // # bytes in params/4 WORD cbProlog : 8; // # bytes in prolog WORD cbRegs : 3; // # regs saved WORD fHasSEH : 1; // TRUE if SEH in func WORD fUseBP : 1; // TRUE if EBP has been allocated WORD reserved : 1; // reserved for future use WORD cbFrame : 2; // frame type } FPO_DATA;