共用方式為


ICorDebugManagedCallback2::MDANotification 方法

提供通知,指出程式代碼執行已在進行偵錯的應用程式中遇到 Managed 偵錯助理 (MDA)。

語法

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

參數

pController [in]ICorDebugController 介面的指標,會公開 MDA 發生所在的進程或應用程式域。

調試程式不應該對控制器是進程或應用程式域進行任何假設,雖然它一律可以查詢介面來判斷。

pThread [in]ICorDebugThread 介面的指標,會公開偵錯事件發生所在的 Managed 線程。

如果 MDA 發生在 Unmanaged 線程上,則的值 pThread 會是 Null。

您必須從 MDA 物件本身取得作業系統 (OS) 線程識別碼。

pMDA[in]公開 MDA 資訊的 ICorDebugMDA 介面指標

備註

MDA 是啟發學習法警告,除了呼叫 ICorDebugController::Continue 以繼續執行正在偵錯的應用程式之外,不需要任何明確的調試程序動作。

Common Language Runtime (CLR) 可以判斷引發哪些 MDA,以及任何時間點任何指定 MDA 中的數據。 因此,調試程式不應該建置任何需要特定 MDA 模式的功能。

MDA 發生后不久,MDA 可能會排入佇列並引發。 如果運行時間需要等到達到引發 MDA 的安全點,而不是在遇到 MDA 時引發 MDA,就會發生這種情況。 這也表示運行時間可能會在一組佇列回呼中引發數個 MDA(類似於「附加」事件作業)。

調試程式應該在從回呼傳回之後立即釋放實例的MDANotification參考ICorDebugMDA,讓CLR回收 MDA 所耗用的記憶體。 如果引發許多 MDA,釋放實例可能會改善效能。

需求

平台:請參閱系統需求

標頭:CorDebug.idl、CorDebug.h

程式庫:CorGuids.lib

.NET Framework 版本: 自 2.0 起提供

另請參閱