次の方法で共有


ランタイム プロセスのデバッグ

更新 : 2007 年 11 月

共通言語ランタイム (CLR: Common Language Runtime) デバッグ API は、ランタイム環境でのデバッグをサポートします。以下では、ランタイム プロセスをデバッグする方法について、順をおって説明します。

  • デバッガが ICorDebug インターフェイスのインスタンスを作成します。CLSID CLSID_CorDebug を使用して CComPtrBase::CoCreateInstance を呼び出し、ICorDebug のインスタンスを取得します。

  • デバッガが ICorDebug::Initialize メソッドを呼び出してデバッグ API を初期化します。

  • デバッガがマネージ イベント ハンドラを登録します。ICorDebug::SetManagedHandler メソッドを呼び出すことにより、ICorDebugManagedCallback インターフェイスのインスタンスをコールバックとして登録し、マネージ コード内のイベントに関する通知と情報を受け取るようにします。

  • 必要に応じて、デバッガがアンマネージ イベント ハンドラを登録します。アンマネージ コードをデバッグする場合は、ICorDebug::SetUnmanagedHandler メソッドを呼び出して ICorDebugUnmanagedCallback のインスタンスをコールバックとして登録し、アンマネージ コード内のイベントに関する通知と情報を受け取るようにします。

  • デバッガがデバッガ プロセスを作成します。ICorDebug::CreateProcess メソッドを呼び出してプロセスを作成します。

  • デバッグ API が新しいデバッガ プロセスについてデバッガに通知します。デバッグ API が ICorDebugManagedCallback のメソッドを呼び出します (最初は ICorDebugManagedCallback::CreateProcess)。この後、ICorDebugManagedCallback::LoadModuleICorDebugManagedCallback::LoadClassICorDebugManagedCallback::CreateThread などが呼び出される場合があります。

  • デバッガがデバッグを停止します。いずれかの時点で、デバッガが ICorDebugManagedCallback::ExitProcess イベントを取得します。このイベントは、デバッグ対象がもう実行されていないことを示します。その後のいずれかの時点で、デバッガは、保持しているインターフェイスへの参照をすべて解放し、次に ICorDebug::Terminate メソッドを呼び出します。

参照

その他の技術情報

デバッグ API の主要概念

CLR デバッグの概要

デバッグ (アンマネージ API リファレンス)