Share via


ICorDebugManagedCallback2::MDANotification Method

Provides notification that code execution has encountered a managed debugging assistant (MDA) in the application that is being debugged.

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

Parameters

Parameter Description

pController

[in] A pointer to an ICorDebugController Interface interface that exposes the process or application domain in which the MDA occurred.

A debugger should not make any assumptions about whether the controller is a process or an application domain, although it can always query the interface to make a determination.

pThread

[in] A pointer to an ICorDebugThread Interface interface that exposes the managed thread on which the debug event occurred.

If the MDA occurred on an unmanaged thread, the value of pThread will be null.

You must get the operating system (OS) thread ID from the MDA object itself.

pMDA

[in] A pointer to an ICorDebugMDA Interface interface that exposes the MDA information.

Remarks

An MDA is a heuristic warning and does not require any explicit debugger action except for calling ICorDebugController::Continue Method to resume execution of the application that is being debugged.

The common language runtime (CLR) can determine which MDAs are fired and which data is in any given MDA at any point. Therefore, debuggers should not build any functionality requiring specific MDA patterns.

MDAs may be queued and fired shortly after the MDA is encountered. This could happen if the runtime needs to wait until it reaches a safe point for firing the MDA, instead of firing the MDA when it encounters it. It also means that the runtime may fire a number of MDAs in a single set of queued callbacks (similar to an "attach" event operation).

A debugger should release the reference to an ICorDebugMDA Interface instance immediately after returning from the MDANotification callback, to allow the CLR to recycle the memory consumed by an MDA. Releasing the instance may improve performance if many MDAs are firing.

Requirements

Platforms: Windows 2000, Windows XP, Windows Server 2003 family

Header: CorDebug.idl

Library: CorGuids.lib

.NET Framework Version: 2.0

See Also

Reference

ICorDebugManagedCallback2 Interface
ICorDebugManagedCallback Interface

Concepts

Diagnosing Errors with Managed Debugging Assistants