MDAInfo 構造体

マネージド デバッグ アシスタント (MDA) の作成をトリガーする Event_MDAFired イベントについて詳しく説明します。

構文

typedef struct _MDAInfo {  
    LPCWSTR  lpMDACaption;  
    LPCWSTR  lpMDAMessage  
} MDAInfo;  

メンバー

メンバー 説明
lpMDACaption 現在の MDA のタイトル。 タイトルには、Event_MDAFired イベントを発生させたエラーの種類が示されます。
lpMDAMessage 現在の MDA によって提供される出力メッセージ。

解説

マネージド デバッグ アシスタント (MDA) は、共通言語ランタイム (CLR) と連携して動作し、ランタイム実行エンジンで無効な条件を特定したり、エンジンの状態に関する追加情報をダンプするなどのタスクを実行したりするためのデバッグ補助機能です。 MDA は、それ以外ではトラップが困難なイベントに関する XML メッセージを生成します。 これらは、マネージド コードとアンマネージド コードの間の遷移をデバッグする場合に特に便利です。

MDA の作成をトリガーするイベントが発生した場合、ランタイムでは次の手順が実行されます。

  • Event_MDAFired イベントの通知を受けられるようにホストにより ICLROnEventManager::RegisterActionOnEvent が呼び出され、IActionOnCLREvent インスタンスの登録が行われていない場合、ランタイムでは既定のホストされていない動作に進みます。

  • ホストによりこのイベントのハンドラーが登録されている場合、ランタイムではデバッガーがプロセスにアタッチされているかどうかが確認されます。 その場合、ランタイムはデバッガーに割り込みます。 デバッガーが続行されると、ホストが呼び出されます。 デバッガーがアタッチされていない場合、ランタイムにより IActionOnCLREvent::OnEvent が呼び出され、data パラメーターとして MDAInfo インスタンスへのポインターを渡します。

ホストでは、MDA をアクティブ化し、MDA がアクティブになったときに通知を受け取ることができます。 これにより、ホストでは既定の動作をオーバーライドし、イベントを発生させたマネージド スレッドを中止して、プロセスの状態が破損するのを防ぐことができます。 MDA の使用に関する詳細情報については、「マネージド デバッグ アシスタントによるエラーの診断」を参照してください。

必要条件

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

ヘッダー: MSCorEE.idl

ライブラリ: MSCorEE.dll にリソースとして含まれます

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

関連項目