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 起提供