Partager via


ICorDebugManagedCallback2::MDANotification, méthode

Fournit une notification indiquant que l’exécution du code a rencontré un assistant de débogage managé (MDA) dans l’application en cours de débogage.

Syntaxe

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

Paramètres

pController [in] Pointeur vers une interface ICorDebugController qui expose le processus ou le domaine d’application dans lequel le MDA s’est produit.

Un débogueur ne doit pas faire d’hypothèses sur la question de savoir si le contrôleur est un processus ou un domaine d’application, bien qu’il puisse toujours interroger l’interface pour effectuer une détermination.

pThread [in] Pointeur vers une interface ICorDebugThread qui expose le thread managé sur lequel l’événement de débogage s’est produit.

Si le MDA s’est produit sur un thread non managé, la valeur de pThread est null.

Vous devez obtenir l’ID de thread du système d’exploitation à partir de l’objet MDA lui-même.

pMDA [in] Pointeur vers une interface ICorDebugMDA qui expose les informations MDA.

Notes

Un MDA est un avertissement heuristique et ne nécessite aucune action de débogueur explicite, sauf l’appel à ICorDebugController::Continue pour reprendre l’exécution de l’application en cours de débogage.

Le Common Language Runtime (CLR) peut déterminer quels MDA sont déclenchés et quelles données se trouvent dans n’importe quel MDA donné à tout moment. Par conséquent, les débogueurs ne doivent pas générer de fonctionnalités nécessitant des modèles MDA spécifiques.

Les MDA peuvent être mis en file d’attente et déclenchés peu de temps après la rencontre du MDA. Cela peut se produire si le runtime doit attendre jusqu’à ce qu’il atteigne un point de sécurité pour déclencher le MDA, au lieu de déclencher le MDA lorsqu’il le rencontre. Cela signifie également que le runtime peut déclencher un certain nombre de MDA dans un même ensemble de rappels mis en file d’attente (comme une opération d’événement « attach »).

Un débogueur doit libérer la référence à une instance de ICorDebugMDA immédiatement après le retour du rappel MDANotification, pour permettre au CLR de recycler la mémoire consommée par un MDA. La libération de l’instance peut améliorer les performances si de nombreux MDA se déclenchent.

Spécifications

Plateformes : Consultez Configuration requise.

En-tête : CorDebug.idl, CorDebug.h

Bibliothèque : CorGuids.lib

Versions de .NET Framework : Disponible depuis la version 2.0

Voir aussi