ICorDebugManagedCallback2::MDANotification 方法

提供通知,程式碼執行在進行偵錯的應用程式中遇到受控偵錯助理 (MDA)。

語法

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

參數

pController
[in] ICorDebugController 介面的指標,會公開發生 MDA 的處理序或應用程式定義域。

偵錯工具不應該對控制器是處理序或應用程式定義域進行任何假設,雖然其一律可查詢介面來做出判斷。

pThread
[in] ICorDebugThread 介面的指標,此介面會公開發生偵錯事件的受控執行緒。

如果 MDA 發生在非受控執行緒上,則 pThread 的值會是 Null。

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

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

備註

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

通用語言執行平台 (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 起可用

另請參閱