Conditions préalables aux interfaces CorDebug.idl
Certaines méthodes des interfaces de débogage requièrent que le processus en cours de débogage (autrement dit, le programme débogué) présente un état spécifique, comme une condition préalable. Cette condition préalable s'applique uniquement aux méthodes membres directes des interfaces déclarées dans le fichier CorDebug.idl. (Autrement dit, elle s'applique uniquement aux méthodes qui ne sont pas héritées de IUnknown.)
État du programme débogué
Le programme débogué présente six états de haut niveau qui sont décrits dans les sections ci-dessous. Seuls trois de ces états sont valides (actif, synchronisé et système d'exploitation figé).
Actif
État valide dans lequel le programme débogué est exécuté. Il s'agit de l'état entre les événements de débogage.
Synchronisé
État valide dans lequel le programme débogué est arrêté et tous les états managés sont interrompus. Le programme débogué atteint cet état de l'une des deux manières suivantes :
Pendant l'intervalle entre le dispatch et la poursuite d'un événement de débogage managé. Il s'agit de la période qui suit le dispatch d'un événement de débogage managé (ou natif dans la bande), mais qui précède la poursuite de l'événement.
Après avoir appelé la méthode ICorDebugController::Stop.
Système d'exploitation figé
État valide dans lequel le programme débogué est arrêté par un événement de débogage natif hors bande. Cet état est pertinent uniquement pour le débogage d'interopérabilité.
Pas encore initialisé
État invalide dans lequel le programme débogué n'a pas été initialisé. Cet état existe pendant la période qui suit la création du programme débogué et qui précède le dispatch du rappel ICorDebugManagedCallback::CreateProcess. Si une méthode qui a été définie dans CorDebug.idl est appelée pendant cet état, elle peut alors retourner une valeur HRESULT de CORDBG_E_NOTREADY.
Inactif ou désactivé
État non valide dans lequel le programme débogué n'est plus disponible pour un débogage. Si une méthode qui a été définie dans CorDebug.idl est appelée pendant cet état, elle peut alors retourner l'une des nombreuses valeurs HRESULT, parmi lesquelles CORDBG_E_PROCESS_DETACHED et CORDBG_E_PROCESS_TERMINATED.
Erreur irrécupérable
État non valide dans lequel le programme débogué entre au moment du dispatch du rappel ICorDebugManagedCallback::DebuggerError. Cela signifie que les services de débogage managés sont très endommagés et inutilisables. Si une méthode qui a été définie dans CorDebug.idl est appelée pendant cet état, elle peut alors retourner une valeur HRESULT de CORDBG_E_UNRECOVERABLE_ERROR.
État requis avant d'appeler des méthodes
Les méthodes membres de l'interface ICorDebug ne présentent pas de restrictions spécifiques à l'état au-delà de leurs déclarations, car elles ne sont pas directement actives sur un objet de processus. Les méthodes membres de toutes les autres interfaces ont des affinités spécifiques au processus. Lorsque ces méthodes sont appelées, l'état du processus du programme débogué doit être actif, synchronisé ou système d'exploitation figé.
Les méthodes suivantes peuvent être appelées lorsque l'état du programme débogué est actif :
Les méthodes suivantes peuvent être appelées lorsque l'état du programme débogué est système d'exploitation figé ou synchronisé :
Toutes les autres méthodes doivent être appelées uniquement lorsque l'état du programme débogué est synchronisé. Sinon, elles peuvent retourner une valeur HRESULT de CORDBG_E_PROCESS_NOT_SYNCHRONIZED.
Voir aussi
Concepts
Vue d'ensemble du débogage CLR