次の方法で共有


ICorDebugUnmanagedCallback::DebugEvent メソッド

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

構文

HRESULT DebugEvent (  
    [in] LPDEBUG_EVENT  pDebugEvent,  
    [in] BOOL           fOutOfBand  
);  

パラメーター

pDebugEvent
[in] ネイティブ イベントへのポインター。

fOutOfBand
[in] アンマネージド イベントが発生した後に、デバッガーが ICorDebugController::Continue を呼び出すまでマネージド プロセスの状態の操作が不可能な場合は true。それ以外の場合は 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::ClearCurrentExceptionICorDebugProcess::GetThreadContextICorDebugProcess::SetThreadContext、またはデバッグ API のその他のメンバーの使用は試みないでください。

必要条件

:システム要件」を参照してください。

ヘッダー: CorDebug.idl、CorDebug.h

ライブラリ: CorGuids.lib

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

関連項目