次の方法で共有


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

共通言語ランタイム (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 メソッドを呼び出します。

参照

概念

CLR デバッグの概要

その他の技術情報

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