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.