プログラムに直接アタッチする
既に実行中のプロセスでプログラムをデバッグするユーザーは、通常、次のプロセスに従います。
IDE で [デバッグ] メニューを開き、[プロセスにアタッチ] コマンドを選択します。
[プロセスにアタッチ] ダイアログ ボックスが表示され、コンピューターにインストールされているすべてのデバッグ エンジン (DE) が一覧表示されます。
選択したプロセスのデバッグに使用する DE を指定し、プロセスを選択して、[アタッチ] ボタンをクリックします。
デバッグ パッケージによってデバッグ セッションが開始され、DE のリストが渡されます。 次に、デバッグ セッションによって、このリストがコールバック関数と共に選択されたプロセスに渡された後、実行中のプログラムを列挙するようにプロセスに指示されます。
プログラムでは、ユーザーの要求に応答して、デバッグ パッケージでセッション デバッグ マネージャー (SDM) をインスタンス化し、選択した DE のリストを渡します。 リストと共に、デバッグ パッケージから SDM に IDebugEventCallback2 インターフェイスを渡します。 デバッグ パッケージで IDebugProcess2::Attach を呼び出し、選択されたプロセスに DE のリストを渡します。 その後、SDM でポートの IDebugProcess2::EnumPrograms を呼び出し、プロセスで実行されているプログラムを列挙します。
この時点から、「起動後にアタッチする」で説明されているとおりに、各デバッグ エンジンがプログラムにアタッチされますが、2 つの例外があります。
効率を高めるため、SDM とアドレス空間を共有するように実装された DE は、各 DE でアタッチ先の一連のプログラムを使用できるようにグループ化されます。 この場合は、IDebugProcess2 で IDebugEngine2::Attach を呼び出し、アタッチ先のプログラムの配列を渡します。
2 つ目の例外として、既に実行されているプログラムにアタッチしている DE によって送信されたスタートアップ イベントには、通常、エントリ ポイント イベントが含まれていません。