Partager via


Attacher après un lancement

Après le lancement d’un programme, la session de débogage est prête à attacher le moteur de débogage (DE) à ce programme.

Choix de conception

Étant donné que la communication est plus facile dans un espace d’adressage partagé, vous devez choisir entre deux approches de conception : définir la communication entre la session de débogage et le DE. Ou, définissez la communication entre le DE et le programme. Choisissez entre les éléments suivants :

  • S’il est plus judicieux de configurer la communication entre la session de débogage et le DE, la session de débogage co-crée le DE et demande au DE de s’attacher au programme. Cette conception laisse la session de débogage et DE ensemble dans un espace d’adressage, et l’environnement d’exécution et le programme ensemble dans un autre.

  • S’il est plus judicieux de configurer la communication entre le DE et le programme, l’environnement d’exécution co-crée le DE. Cette conception laisse le SDM dans un espace d’adressage et l’environnement DE, l’environnement d’exécution et le programme ensemble dans un autre. Cette conception est typique d’un DE implémenté avec un interpréteur pour exécuter des langages scriptés.

    Remarque

    La façon dont le DE s’attache au programme dépend de l’implémentation. La communication entre le SERVICE et le programme dépend également de l’implémentation.

Implémentation

Par programmation, lorsque le gestionnaire de débogage de session (SDM) reçoit d’abord l’objet IDebugProgram2 qui représente le programme à lancer, il appelle la méthode Attach , en le transmettant à un objet IDebugEventCallback2 , qui est ensuite utilisé pour transmettre des événements de débogage à la SDM. La IDebugProgram2::Attach méthode appelle ensuite la méthode OnAttach . Pour plus d’informations sur la façon dont le SDM reçoit l’interface IDebugProgram2 , consultez Notification du port.

Si votre DE doit s’exécuter dans le même espace d’adressage que le programme que vous déboguez : car le DE fait fait partie d’un interpréteur qui exécute un script, la IDebugProgramNodeAttach2::OnAttach méthode retourne S_FALSE. Le S_FALSE retour indique qu’il a terminé le processus d’attachement.

Si, toutefois, le DE s’exécute dans l’espace d’adressage du SDM : la IDebugProgramNodeAttach2::OnAttach méthode retourne S_OK, ou l’interface IDebugProgramNodeAttach2 n’est pas implémentée du tout sur l’objet IDebugProgramNode2 associé au programme que vous déboguez. Dans ce cas, la méthode Attach est appelée pour terminer l’opération d’attachement.

Dans ce dernier cas, vous devez appeler la méthode GetProgramId sur l’objet IDebugProgram2 qui a été transmis à la IDebugEngine2::Attach méthode, stocker l’objet GUID de programme local et le retourner GUID lorsque la IDebugProgram2::GetProgramId méthode est ensuite appelée sur cet objet. Il GUID est utilisé pour identifier le programme de manière unique sur les différents composants de débogage.

Dans le cas de la IDebugProgramNodeAttach2::OnAttach méthode qui retourne S_FALSE, l’utilisation GUID du programme est passée à cette méthode et elle est la IDebugProgramNodeAttach2::OnAttach méthode qui définit l’objet GUID de programme local.

Le DE est maintenant attaché au programme et prêt à envoyer tous les événements de démarrage.