6.1.2 デバッグ タイプ

デバッグ ディレクトリのデバッグ タイプ フィールドのために以下の値が定義されています。

定数 解説
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;


戻る