ネイティブ イベントが発生したことをデバッガーに通知します。
構文
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 を呼び出して例外イベントを無視します。 このメソッドを呼び出すと、continue 要求でDBG_EXCEPTION_NOT_HANDLEDではなくDBG_CONTINUEが送信され、帯域外ブレークポイントとシングルステップ例外が自動的にクリアされます。 帯域外イベントは、デバッグ中のアプリケーションが停止している場合や、未処理のインバンド イベントが既に存在する場合でも、いつでも発生する可能性があります。
デバッガーは、帯域外ブレークポイント イベントをすぐに超えて続行する必要があります。 デバッガーでは、ブレークポイントを追加および削除するために 、ICorDebugProcess2::SetUnmanagedBreakpoint メソッドと ICorDebugProcess2::ClearUnmanagedBreakpoint メソッドを使用する必要があります。 これらのメソッドは、帯域外ブレークポイントを自動的にスキップします。 したがって、ディスパッチされる唯一の帯域外ブレークポイントは、Win32 DebugBreak 関数の呼び出しなど、命令ストリームに既に存在する生のブレークポイントである必要があります。
ICorDebugProcess::ClearCurrentException、ICorDebugProcess::GetThreadContext、ICorDebugProcess::SetThreadContext、またはデバッグ API の他のメンバーを使用しないでください。
Requirements
プラットフォーム:サポートされている .NET オペレーティング システムを参照してください。
ヘッダ: CorDebug.idl、CorDebug.h
図書館: CorGuids.lib
.NET のバージョン: .NET Framework 1.0 以降で使用可能
こちらも参照ください
.NET