ICorDebugUnmanagedCallback::DebugEvent メソッド
ネイティブ イベントが発生したことをデバッガーに通知します。
構文
HRESULT DebugEvent (
[in] LPDEBUG_EVENT pDebugEvent,
[in] BOOL fOutOfBand
);
パラメーター
pDebugEvent
[in]ネイティブ イベントへのポインター。
fOutOfBand
[入力] true
、アンマネージ イベントが発生した後にマネージド プロセスの状態との対話が不可能な場合は、デバッガーが ICorDebugController::Continue; を呼び出すまで、それ以外の場合は false
。
解説
デバッグ中のスレッドが Win32 スレッドである場合は、Win32 デバッグ インターフェイスのメンバーを使用しないでください。 ICorDebugController::Continue
は、Win32 スレッドでのみ、および帯域外イベントを継続している場合のみ、呼び出すことができます。
DebugEvent
コールバックは、コールバックの標準規則に従いません。 DebugEvent
を呼び出すと、プロセスは、生の OS デバッグの停止状態になります。 プロセスは同期されません。 マネージド コードに関する情報の要求を満たすために必要な場合は、自動的に同期状態になります。これにより、入れ子になった他の DebugEvent
コールバックが発生する可能性があります。
プロセスを続行する前に例外イベントを無視するには、プロセスで ICorDebugProcess::ClearCurrentException を呼び出します。 このメソッドを呼び出すと、続行要求で DBG_EXCEPTION_NOT_HANDLED の代わりに DBG_CONTINUE が送信され、帯域外のブレークポイントとシングルステップの例外が自動的にクリアされます。 帯域外のイベントは、デバッグ中のアプリケーションが停止したように見える場合でも、未処理の帯域内イベントが既に存在する場合でも、いつでも発生する可能性があります。
.NET Framework バージョン 2.0 では、デバッガーは帯域外のブレークポイント イベントを過ぎてもすぐに続行する必要があります。 デバッガーでは、ICorDebugProcess2::SetUnmanagedBreakpoint および ICorDebugProcess2::ClearUnmanagedBreakpoint メソッドを使用して、ブレークポイントの追加と削除を行う必要があります。 これらのメソッドでは、帯域外のブレークポイントが自動的にスキップされます。 したがって、ディスパッチされる帯域外のブレークポイントは、Win32 DebugBreak
関数の呼び出しなど、命令ストリームに既に存在する生のブレークポイントである必要があり ます。 ICorDebugProcess::ClearCurrentException
、ICorDebugProcess::GetThreadContext、ICorDebugProcess::SetThreadContext、またはデバッグ API のその他のメンバーの使用は試みないでください。
必要条件
:「システム要件」を参照してください。
ヘッダー: CorDebug.idl、CorDebug.h
ライブラリ: CorGuids.lib
.NET Framework のバージョン: 1.0 以降で使用可能
関連項目
.NET