Partager via


ICorDebugManagedCallback2::MDANotification, méthode

Fournit une notification indiquant que l'exécution du code a rencontré un Assistant Débogage managé (MDA) dans l'application qui est déboguée.

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 de suppositions sur le fait que le contrôleur soit un processus ou un domaine d'application, bien qu'il puisse toujours interroger l'interface pour le savoir.

  • 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 sera 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 du débogueur explicite, sauf l'appel de ICorDebugController::Continue pour continuer l'exécution de l'application qui est déboguée.

À tout moment, le Common Language Runtime (CLR) peut déterminer quels MDA sont déclenchés et quelles données sont contenues dans n'importe quel MDA spécifique. 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 juste après que le MDA a été rencontré. Cela peut se produire si le runtime doit attendre d'arriver à un point sans risque pour déclencher le MDA, plutôt que de le déclencher lorsqu'il le rencontre. Cela signifie également que le runtime peut déclencher plusieurs MDA dans un même jeu de rappels mis en file d'attente (similaire à une opération d'événement « attacher »).

Un débogueur doit libérer la référence à une instance 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 sont déclenchés.

Configuration requise

Plateformes : consultez Configuration requise du .NET Framework.

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

Bibliothèque : CorGuids.lib

Versions du .NET Framework : 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Voir aussi

Référence

ICorDebugManagedCallback2, interface

ICorDebugManagedCallback, interface

Concepts

Diagnostic d'erreurs avec les Assistants de débogage managés