Attachement après un lancementAttach after a launch

Une fois un programme démarre, la session de débogage est prête à attacher le moteur de débogage (dé) dudit programme.After a program launches, 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 choisir entre deux approches de conception : définir la communication entre la session de débogage et l’Allemagne.Because communication is easier within a shared address space, you must choose between two design approaches: set communication between the debug session and the DE. Ou bien, définir la communication entre l’Allemagne et le programme.Or, set communication between the DE and the program. Le choix entre les éléments suivants :Choose between the following:

  • S’il est plus judicieux de configurer la communication entre la session de débogage et l’Allemagne, la session de débogage crée l’Allemagne et vous demande de l’Allemagne à joindre au programme.If it makes more sense to set up the communication between the debug session and the DE, the debug session co-creates the DE and asks the DE to attach to the program. 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 dans un autre.This design 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 de configurer la communication entre l’Allemagne et le programme, l’environnement d’exécution crée l’Allemagne.If it makes more sense to set up the communication between the DE and the program, the run-time environment co-creates the DE. Cette conception laisse le SDM dans un espace d’adressage et l’Allemagne, environnement d’exécution et programme ensemble dans un autre.This design leaves the SDM in one address space and the DE, run-time environment, and program together in another. Cette conception est typique d’un dé est implémentée avec un interpréteur pour exécuter des langages de script.This design is typical of a DE that is implemented with an interpreter to run scripted languages.

    Note

    Comment le D’attache au programme est dépend de l’implémentation.How the DE attaches to the program is implementation-dependent. Communication entre l’Allemagne 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 programmation, lorsque le Gestionnaire de session de débogage (SDM) reçoit d’abord le IDebugProgram2 objet qui représente le programme doit être lancé, il appelle le Attach méthode, en lui transmettant un IDebugEventCallback2 objet, qui est ultérieur utilisé pour transmettre des événements de débogage vers 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 notification du port.For more information on how the SDM receives the IDebugProgram2 interface, see Notifying the port.

Si votre dé doit s’exécuter dans le même espace d’adressage que le programme que vous déboguez : étant donné que l’Allemagne fait généralement partie d’un interpréteur qui exécute un script, le IDebugProgramNodeAttach2::OnAttach retourne de la méthode S_FALSE.If your DE needs to run in the same address space as the program you're debugging: because the DE is typically part of an interpreter that's running a script, the IDebugProgramNodeAttach2::OnAttach method returns S_FALSE. Le S_FALSE retour indique qu’il terminé le processus d’attachement.The S_FALSE return indicates that it completed the attach process.

Si, toutefois, l’Allemagne s’exécute dans l’espace d’adressage du SDM : le IDebugProgramNodeAttach2::OnAttach retourne de la méthode S_OK, ou le IDebugProgramNodeAttach2 interface n’est pas implémentée du tout dans le IDebugProgramNode2 objet associée au programme que vous déboguez.If, however, the DE runs in the address space of the SDM: the IDebugProgramNodeAttach2::OnAttach method returns S_OK, or the IDebugProgramNodeAttach2 interface isn't implemented at all on the IDebugProgramNode2 object associated with the program you're debugging. 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 de la GUID dans le programme local de l’objet et retournez 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 entre les différents composants de débogage.The GUID is used to identify the program uniquely across the various debug components.

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.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's the IDebugProgramNodeAttach2::OnAttach method that sets the GUID on the local program object.

L’Allemagne 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
Notification du port Notifying the port
Tâches de débogage Debugging tasks
IDebugEventCallback2 IDebugEventCallback2
IDebugProgram2 IDebugProgram2
Attacher Attach
GetProgramId GetProgramId
IDebugProgramNode2 IDebugProgramNode2
IDebugProgramNodeAttach2 IDebugProgramNodeAttach2
OnAttach OnAttach
AttacherAttach