Lancer le programme
Les utilisateurs qui souhaitent déboguer un programme peuvent appuyer sur F5 pour lancer le débogueur à partir de l’IDE. Cette opération déclenche une série d’événements qui aboutissent finalement à la connexion de l’IDE à un moteur de débogage (DE), qui est à son tour connecté, ou attaché, au programme comme suit :
L’IDE appelle d’abord le package du projet pour obtenir les paramètres de débogage du projet actif de la solution. Les paramètres comprennent le répertoire de départ, les variables d’environnement, le port dans lequel le programme sera exécuté et le DE à utiliser pour créer le programme, s’il est spécifié. Ces paramètres sont transmis au package de débogage.
Si un DE est spécifié, celui-ci appelle le système d’exploitation pour lancer le programme. Le lancement du programme entraîne le chargement de l’environnement d’exécution du programme. Par exemple, si un programme est écrit en MSIL, le common language runtime sera invoqué pour exécuter le programme.
-ou-
Si aucun DE n’est spécifié, le port appelle le système d’exploitation pour lancer le programme, ce qui entraîne le chargement de l’environnement d’exécution du programme.
Remarque
Si un DE est utilisé pour lancer un programme, il est probable que le même DE soit attaché au programme.
Selon que le DE ou le port a lancé le programme, l’environnement DE ou l’environnement d’exécution crée ensuite une description du programme, ou un nœud, et notifie le port que le programme est en cours d’exécution.
Remarque
Il est recommandé que l’environnement d’exécution crée le nœud de programme, car celui-ci est une représentation simplifiée d’un programme qui peut être débogué. La création et l’inscription d’un nœud de programme ne nécessitent pas le chargement d’un DE entier. Si le DE est conçu pour s’exécuter dans le processus de l’IDE, mais qu’aucune IDE n’est en cours d’exécution, un composant permettant d’ajouter un nœud de programme au port est nécessaire.
Le programme nouvellement créé, ainsi que tous les autres programmes, liés ou non, lancés ou attachés à partir de la même IDE, composent une session de débogage.
Sur le plan programmatique, lorsque l’utilisateur appuie pour la première fois sur la touche F5, le module de débogage de Visual Studio appelle le module de projet (associé au type de programme lancé) par l’intermédiaire de la méthode DebugLaunch, qui remplit à son tour une structure VsDebugTargetInfo2 avec les paramètres de débogage du projet actif de la solution. Cette structure est renvoyée au package de débogage par le biais d’un appel à la méthode LaunchDebugTargets2. Le package de débogage instancie ensuite le manager de session de débogage (SDM), qui lance le programme en cours de débogage et tous les moteurs de débogage associés.
L’un des arguments transmis au SDM est le GUID du DE à utiliser pour lancer le programme.
Si le GUID du DE n’est pas
GUID_NULL
, le SDM cocrée le DE, puis appelle sa méthode LaunchSuspended pour lancer le programme. Par exemple, si un programme est écrit en code natif,IDebugEngineLaunch2::LaunchSuspended
appellera probablementCreateProcess
etResumeThread
(fonctions Win32) pour exécuter le programme.Le lancement du programme entraîne le chargement de l’environnement d’exécution du programme. Le DE ou l’environnement d’exécution crée alors une interface IDebugProgramNode2 pour décrire le programme et transmet cette interface à AddProgramNode pour notifier au port que le programme est en cours d’exécution.
Si
GUID_NULL
est transmis, alors le port lance le programme. Une fois le programme en cours d’exécution, l’environnement d’exécution crée une interfaceIDebugProgramNode2
pour décrire le programme et la transmet àIDebugPortNotify2::AddProgramNode
. Le port est ainsi notifié que le programme est en cours d’exécution. Ensuite, le SDM attache le moteur de débogage au programme en cours d’exécution.
Contenu de cette section
Notification du port explique ce qui se passe après le lancement d’un programme et la notification du port.
Attachement après un lancement documente lorsque la session de débogage est prête à attacher le DE au programme.
Contenu connexe
- Tâches de débogage contient des liens vers diverses tâches de débogage, telles que le lancement d’un programme et l’évaluation des expressions.