Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le moteur de débogage (DE) envoie généralement l’un des événements suivants comme dernier événement de démarrage :
Événement de point d’entrée, s’il s’attache à un programme nouvellement lancé
L'événement de chargement complet, si l'attachement à un programme déjà en cours d'exécution.
Ces deux événements arrêtent les événements, ce qui signifie que le DE attend une réponse de l’utilisateur par le biais de l’IDE. Pour plus d’informations, consultez modes opérationnels.
Arrêt de l’événement
Lorsqu'un événement d'arrêt est transmis à la session de débogage :
Le programme et le thread qui contiennent le pointeur d’instruction actuel peuvent être obtenus à partir de l’interface d’événement.
L’IDE détermine le fichier de code source et la position actuels, en les mettant en surbrillance dans l’éditeur.
La session de débogage répond généralement à ce premier événement d’arrêt en appelant la méthode Continue du programme.
Le programme s’exécute ensuite jusqu’à ce qu’il rencontre une condition d’arrêt, par exemple en appuyant sur un point d’arrêt. Dans ce cas, le DE envoie un événement de point d’arrêt à la session de débogage. L’événement de point d’arrêt est un événement d’arrêt, et le DE attend de nouveau une réponse utilisateur.
Si l'utilisateur choisit d’entrer, de passer ou de sortir d’une fonction, l’IDE demande à la session de débogage d'appeler la méthode du
Stepprogramme. L’IDE passe ensuite l’unité d’étape (instruction, déclaration ou ligne) et le type d’étape (qu’il s’agisse d’entrer dans, de passer sur ou de sortir de la fonction). Une fois l’étape terminée, le DE envoie un événement d'étape terminée à la session de débogage, un événement d'arrêt.- ou -
Si l’utilisateur choisit de continuer à s’exécuter à partir du pointeur d’instruction actuel, l’IDE invite la session de débogage à appeler la méthode Execute du programme. Le programme reprend l’exécution jusqu’à ce qu’il rencontre la condition d’arrêt suivante.
- ou -
Si la session de débogage doit ignorer un événement d’arrêt particulier, la session de débogage appelle la méthode Continue du programme. Si le programme était en train d'entrer dans, de passer au-dessus de, ou de sortir d'une fonction lorsqu'il a rencontré la condition d'arrêt, il continue l’étape.
Par programmation, lorsque le DE rencontre une condition d’arrêt, il envoie ces événements d’arrêt comme IDebugLoadCompleteEvent2 ou IDebugEntryPointEvent2 au gestionnaire de débogage de session (SDM) au moyen d’une interface IDebugEventCallback2 . Le DE transmet les interfaces IDebugProgram2 et IDebugThread2 qui représentent le programme et le thread contenant le pointeur d’instruction actuel. Le SDM appelle IDebugThread2 ::EnumFrameInfo pour obtenir le cadre de pile supérieur et appelle IDebugStackFrame2 ::GetDocumentContext pour obtenir le contexte de document associé au pointeur d’instruction actuel. Ce contexte de document est généralement un nom de fichier de code source, une ligne et un numéro de colonne. L’IDE les utilise pour mettre en surbrillance le code source qui contient le pointeur d’instruction actuel.
Le SDM répond généralement à ce premier événement d’arrêt en appelant IDebugProgram2 ::Continue. Le programme s’exécute ensuite jusqu’à ce qu’il rencontre une condition d’arrêt, par exemple en appuyant sur un point d’arrêt, auquel cas le DE envoie une interface IDebugBreakpointEvent2 au SDM. L’événement de point d’arrêt est un événement d’arrêt, et le DE attend de nouveau une réponse utilisateur.
Si l’utilisateur choisit d’entrer, de dépasser ou de sortir d’une fonction, l’IDE invite le SDM à appeler IDebugProgram2 ::Step. L’IDE transmet ensuite le STEPUNIT (instruction, déclaration ou ligne) et le STEPKIND, autrement dit, qu’il s’agisse d’entrer dans, de passer par-dessus, ou de sortir de la fonction. Une fois l’étape terminée, le DE envoie une interface IDebugStepCompleteEvent2 au SDM, qui est un événement d’arrêt.
Si l’utilisateur choisit de continuer à s’exécuter à partir du pointeur d’instruction actuel, l’IDE demande au SDM d’appeler IDebugProgram2 ::Execute. Le programme reprend l’exécution jusqu’à ce qu’il rencontre la condition d’arrêt suivante.
Si le package de débogage doit ignorer un événement d’arrêt particulier, le package de débogage appelle le SDM, qui appelle IDebugProgram2 ::Continue. Si le programme est entré dans, passé par-dessus ou sorti d'une fonction lorsqu'il a rencontré la condition d'arrêt, il continue l'étape. Cela implique que le programme conserve un état de progression, pour assurer la continuité.
Les appels effectués par le SDM à
Step, Exécuter et Continuer sont asynchrones, ce qui signifie que le SDM s’attend à ce que l’appel retourne rapidement. Si le DE envoie au SDM un événement d'arrêt sur le même thread avant queStep, Execute ou Continue ne retourne, le SDM cesse de répondre.