#pragma once class CDebugSection{ public: char szNowFilePath[MAX_PATH]; char *buffer; int length; //////////////////////////////////// // デバッグ用の固有情報 //イメージベース DWORD dwImageBase; //リライタブルセクションのRVA DWORD dwRVA_RWSection; //コードセクションのRAVとサイズ DWORD dwRVA_CodeSection; int SizeOf_CodeSection; // オブジェクトモジュール ObjectModule objectModule; // オブジェクトモジュールリストに類似したソースコードリスト BasicSources _sourcesLinkRelationalObjectModule; //コードと行番号の関係 SourceLines _oldSourceLines; //グローバル実行領域のサイズ int GlobalOpBufferSize; const UserProc *pSub_DebugSys_EndProc; //ネイティブコードバッファ char *OpBuffer; //シングルステップ用コードバッファ char *SingleStepCodeBuffer; //ブレークポイント用コードバッファ char *BreakStepCodeBuffer; //////////////////////////////////// CDebugSection() : buffer( NULL ) , length( 0 ) , dwImageBase( 0 ) , dwRVA_RWSection( 0 ) , dwRVA_CodeSection( 0 ) , SizeOf_CodeSection( 0 ) , GlobalOpBufferSize( 0 ) , pSub_DebugSys_EndProc( NULL ) , OpBuffer( NULL ) , SingleStepCodeBuffer( NULL ) , BreakStepCodeBuffer( NULL ) { szNowFilePath[0]=0; } ~CDebugSection(); void make(void); private: void UpdateBreakPoint(void); char *MakeSingleStepCode(void); BOOL __load(void); public: BOOL load(HMODULE hModule); void choice(void); void DeleteDebugInfo(void); }; class CDBDebugSection{ public: CDebugSection **ppobj_ds; int num; CDebugSection *pobj_now; CDBDebugSection(); ~CDBDebugSection(); BOOL add(HMODULE hModule); void del(HMODULE hModule); void choice(int index); }; extern CDBDebugSection *pobj_DBDebugSection;