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.
Après le lancement d’un programme, la session de débogage est prête à attacher le moteur de débogage (DE) à ce programme.
Décisions 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 ainsi que le programme se retrouvent ensemble dans un autre. Cette conception est typique d’un DE implémenté avec un interpréteur pour exécuter des langages scriptés.
Note
La façon dont le DE s’attache au programme dépend de l’implémentation. La communication entre le DE et le programme dépend également de l’implémentation.
Implementation
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 à travers les différents composants de débogage.
Dans le cas où la méthode IDebugProgramNodeAttach2::OnAttach retourne S_FALSE, le GUID à utiliser pour le programme est passé à cette méthode, et c'est la méthode IDebugProgramNodeAttach2::OnAttach qui définit le GUID sur l'objet programme local.
Le DE est maintenant attaché au programme et prêt à envoyer tous les événements de démarrage.