次の方法で共有


ICorDebugManagedCallback2::MDANotification メソッド

コードの実行で、デバッグ中のアプリケーションでマネージド デバッグ アシスタント (MDA) が検出されたことを示す通知を提供します。

構文

HRESULT MDANotification(
    [in] ICorDebugController  *pController,
    [in] ICorDebugThread      *pThread,
    [in] ICorDebugMDA         *pMDA
);

パラメーター

pController [in]MDA が発生したプロセスまたはアプリケーション ドメインを公開する ICorDebugController インターフェイスへのポインター。

デバッガーでは、コントローラーがプロセスかアプリケーション ドメインかに関する想定を行うべきではありません。ただし、常にインターフェイスに対してクエリを実行して決定を行うことができます。

pThread [in]デバッグ イベントが発生したマネージド スレッドを公開する ICorDebugThread インターフェイスへのポインター。

アンマネージド スレッドで MDA が発生した場合、 pThread の値は null になります。

MDA オブジェクト自体からオペレーティング システム (OS) スレッド ID を取得する必要があります。

pMDA [in]MDA 情報を公開する ICorDebugMDA インターフェイスへのポインター。

注釈

MDA はヒューリスティック警告であり、 ICorDebugController::Continue を呼び出してデバッグ中のアプリケーションの実行を再開する場合を除き、明示的なデバッガー アクションは必要ありません。

共通言語ランタイム (CLR) は、発生する MDA と、任意の特定の MDA 内のデータを任意の時点で決定できます。 そのため、デバッガーは、特定の MDA パターンを必要とする機能をビルドしないでください。

MDA が検出された直後に、MDA がキューに登録され、起動される可能性があります。 これは、ランタイムが発生したときに MDA を起動するのではなく、MDA を起動するための安全なポイントに達するまで待機する必要がある場合に発生する可能性があります。 また、ランタイムがキューに登録されたコールバックの 1 つのセットで多数の MDA を起動する可能性があることを意味します ("アタッチ" イベント操作と同様)。

デバッガーは、MDANotification コールバックから戻った直後にICorDebugMDA インスタンスへの参照を解放して、CLR が MDA によって消費されたメモリをリサイクルできるようにする必要があります。 多くの MDA が起動している場合、インスタンスを解放するとパフォーマンスが向上する可能性があります。

Requirements

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

ヘッダ: CorDebug.idl、CorDebug.h

図書館: CorGuids.lib

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

こちらも参照ください