Partager via


Lancer un programme

Les utilisateurs qui souhaitent déboguer un programme peuvent appuyer sur F5 pour exécuter le débogueur à partir de l’IDE. Cela commence une série d’événements qui aboutissent à la connexion de l’IDE à un moteur de débogage (DE), qui est à son tour connecté ou attaché au programme comme suit :

  1. L’IDE appelle d’abord le package de projet pour obtenir les paramètres de débogage de projet actif de la solution. Les paramètres incluent le répertoire de démarrage, les variables d’environnement, le port dans lequel le programme s’exécutera et le DE à utiliser pour créer le programme, le cas échéant. Ces paramètres sont passés au paquet de débogage.

  2. Si un DE est spécifié, le DE appelle le système d’exploitation pour lancer le programme. En conséquence du lancement du programme, l’environnement d’exécution du programme se charge. Par exemple, si un programme est écrit dans MSIL, le Common Language Runtime est appelé pour exécuter le programme.

    - ou -

    Si un DE n’est pas 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.

    Note

    Si un DE est utilisé pour lancer un programme, il est probable que le même DE soit attaché au programme.

  3. 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 avertit le port que le programme est en cours d’exécution.

    Note

    Il est recommandé que l’environnement d’exécution crée le nœud de programme, car le nœud du programme est une représentation légère d’un programme qui peut être débogué. Il n’est pas nécessaire de charger l’intégralité d’un DE pour créer et inscrire un nœud de programme. Si le DE est conçu pour s’exécuter dans le processus de l’IDE, mais qu’aucun IDE n’est en cours d’exécution, il doit y avoir un composant qui peut ajouter un nœud de programme au port.

    Le programme nouvellement créé, ainsi que tous les autres programmes, associés ou non liés, lancés ou attachés à partir du même IDE, composent une session de débogage.

    Par programmation, lorsque l’utilisateur appuie d’abord sur F5, le package de débogage de Visual Studio appelle le package de projet (associé au type de programme lancé) via la DebugLaunch méthode, qui remplit à son tour une VsDebugTargetInfo2 structure avec les paramètres de débogage de projet actif de la solution. Cette structure est renvoyée au package de débogage par le biais d’un appel à la LaunchDebugTargets2 méthode. Le package de débogage instancie ensuite le gestionnaire de débogage de session (SDM), qui lance le programme en cours de débogage et tous les moteurs de débogage associés.

    L’un des arguments passés au SDM est le GUID du DE à utiliser pour lancer le programme.

    Si le GUID DE n’est pas GUID_NULL, le SDM co-cré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 CreateProcess probablement et ResumeThread (fonctions Win32) pour exécuter le programme.

    En conséquence du lancement du programme, l’environnement d’exécution du programme est chargé. L’environnement DE ou d’exécution crée ensuite une interface IDebugProgramNode2 pour décrire le programme et transmet cette interface à AddProgramNode pour notifier le port que le programme est en cours d’exécution.

    Si GUID_NULL est passé en paramètre, alors le port lance le programme. Une fois le programme en cours d’exécution, l’environnement d’exécution crée une IDebugProgramNode2 interface pour décrire le programme et le transmet à IDebugPortNotify2::AddProgramNode. Cela avertit le port 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.

Dans cette section

La notification du port explique ce qui se passe après qu’un programme est lancé et que le port est averti.

Attachement après un lancement de documents lorsque la session de débogage est prête à attacher le DE au programme.

  • Les tâches de débogage contiennent des liens vers différentes tâches de débogage, telles que le lancement d’un programme et l’évaluation d’expressions.