次の方法で共有


ICorDebugUnmanagedCallback::D ebugEvent メソッド

ネイティブ イベントが発生したことをデバッガーに通知します。

構文

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::ClearCurrentExceptionICorDebugProcess::GetThreadContextICorDebugProcess::SetThreadContext、またはデバッグ API の他のメンバーを使用しないでください。

Requirements

プラットフォーム:サポートされている .NET オペレーティング システムを参照してください。

ヘッダ: CorDebug.idl、CorDebug.h

図書館: CorGuids.lib

.NET のバージョン: .NET Framework 1.0 以降で使用可能

こちらも参照ください