Attachement d’après le lancement d’unAttaching After a Launch

Après le lancement d’un programme, la session de débogage est prête à attacher le moteur de débogage (DE) ce programme.After a program has been launched, the debug session is ready to attach the debug engine (DE) to said program.

Décisions de conceptionDesign Decisions

Étant donné que la communication est plus facile au sein d’un espace d’adressage partagé, vous devez décider s’il est plus judicieux pour faciliter la communication entre la session de débogage et DE, ou entre les périphériques et le programme.Because communication is easier within a shared address space, you must decide whether it makes more sense to facilitate the communication between the debug session and the DE, or between the DE and the program. Le choix entre les éléments suivants :Choose between the following:

  • S’il est plus judicieux pour faciliter la communication entre la session de débogage et DE, la session de débogage crée le DE et vous demande le DE à joindre au programme.If it makes more sense to facilitate communication between the debug session and the DE, then the debug session co-creates the DE and asks the DE to attach to the program. Cela laisse la session de débogage et DE ensemble dans un espace d’adressage et l’environnement d’exécution et le programme dans un autre.This leaves the debug session and DE together in one address space, and the run-time environment and program together in another.

  • S’il est plus judicieux pour faciliter la communication entre les périphériques et le programme, puis l’environnement d’exécution crée le DE.If it makes more sense to facilitate communication between the DE and the program, then the run-time environment co-creates the DE. Cela laisse le SDM dans un espace d’adressage et le DE, un environnement d’exécution et un programme dans un autre.This leaves the SDM in one address space, and the DE, run-time environment, and program together in another. Ceci est normal d’un DE est implémenté avec un interpréteur pour exécuter des langages de script.This is typical of a DE that is implemented with an interpreter to run scripted languages.

    Note

    Comment le D’attache au programme est dépendant de l’implémentation.How the DE attaches to the program is implementation-dependent. Communication entre les périphériques et le programme est également dépend de l’implémentation.Communication between the DE and the program is also implementation-dependent.

ImplémentationImplementation

Par programme, lorsque le Gestionnaire de session de débogage (SDM) reçoit d’abord le IDebugProgram2 objet qui représente le programme à exécuter, il appelle la Attach méthode, en lui passant un IDebugEventCallback2 objet, qui est plus récente est utilisé pour passer les événements de débogage à le SDM.Programmatically, when the session debug manager (SDM) first receives the IDebugProgram2 object that represents the program to be launched, it calls the Attach method, passing it an IDebugEventCallback2 object, which is later used to pass debug events back to the SDM. Le IDebugProgram2::Attach méthode appelle ensuite la OnAttach (méthode).The IDebugProgram2::Attach method then calls the OnAttach method. Pour plus d’informations sur la façon dont le SDM reçoit le IDebugProgram2 l’interface, consultez notifier le Port.For more information on how the SDM receives the IDebugProgram2 interface, see Notifying the Port.

Si votre DE doit s’exécuter dans le même espace d’adressage que le programme débogué, généralement parce que le DE fait partie d’un interpréteur exécutant un script, le IDebugProgramNodeAttach2::OnAttach méthode retourne S_FALSE, indiquant qu’elle a été le processus d’attachement.If your DE needs to run in the same address space as the program being debugged, typically because the DE is part of an interpreter running a script, the IDebugProgramNodeAttach2::OnAttach method returns S_FALSE, indicating that it completed the attach process.

Si, en revanche, le DE s’exécute dans l’espace d’adressage de la SDM, la IDebugProgramNodeAttach2::OnAttach méthode retourne S_OK ou IDebugProgramNodeAttach2 interface n’est pas implémentée tout en la IDebugProgramNode2 objet associé au programme en cours de débogage.If, on the other hand, the DE runs in the address space of the SDM, the IDebugProgramNodeAttach2::OnAttach method returns S_OK or the IDebugProgramNodeAttach2 interface is not implemented at all on the IDebugProgramNode2 object associated with the program being debugged. Dans ce cas, le attacher méthode est appelée par la suite pour terminer l’opération d’attachement.In this case, the Attach method is eventually called to complete the attach operation.

Dans ce cas, vous devez appeler le GetProgramId méthode sur le IDebugProgram2 objet qui a été passé à la IDebugEngine2::Attach (méthode), le magasin du GUID dans le programme local de l’objet et retourner cette GUID lorsque le IDebugProgram2::GetProgramId méthode est appelée par la suite sur cet objet.In the latter case, you must call the GetProgramId method on the IDebugProgram2 object that was passed to the IDebugEngine2::Attach method, store the GUID in the local program object, and return this GUID when the IDebugProgram2::GetProgramId method is subsequently called on this object. Le GUID est utilisé pour identifier de manière unique le programme sur les différents composants de débogage.The GUID is used to identify the program uniquely across the various debug components.

Notez que dans le cas de la IDebugProgramNodeAttach2::OnAttach méthode retournant S_FALSE, le GUID à utiliser pour le programme est passé à cette méthode, il le IDebugProgramNodeAttach2::OnAttach méthode qui définit la GUID sur l’objet de programme local.Note that in the case of the IDebugProgramNodeAttach2::OnAttach method returning S_FALSE, the GUID to use for the program is passed to that method and it is the IDebugProgramNodeAttach2::OnAttach method that sets the GUID on the local program object.

Le D’est maintenant attaché au programme et prêt à envoyer les événements de démarrage.The DE is now attached to the program and ready to send any startup events.

Voir aussiSee Also

Attachement directement à un programme Attaching Directly to a Program
Notifier le Port Notifying the Port
Tâches de débogage Debugging Tasks
IDebugEventCallback2 IDebugEventCallback2
IDebugProgram2 IDebugProgram2
Joindre Attach
GetProgramId GetProgramId
IDebugProgramNode2 IDebugProgramNode2
IDebugProgramNodeAttach2 IDebugProgramNodeAttach2
OnAttach OnAttach
AttacherAttach