Attacher le programmeAttach to the program

Une fois que vous avez enregistré vos programmes avec le port approprié, vous devez attacher le débogueur au programme que vous souhaitez déboguer.After you have registered your programs with the appropriate port, you must attach the debugger to the program you want to debug.

Choisissez comment attacherChoose how to attach

Il existe trois façons dans lequel le Gestionnaire de session de débogage (SDM) tente de joindre au programme en cours de débogage.There are three ways in which the session debug manager (SDM) attempts to attach to the program being debugged.

  1. Pour les programmes qui sont lancées par le moteur de débogage via le LaunchSuspended (méthode) (standard des langages interprétés, par exemple), le SDM Obtient le IDebugProgramNodeAttach2 à partir de l’interface le IDebugProgramNode2 objet associée au programme qui y sont attaché.For programs that are launched by the debug engine through the LaunchSuspended method (typical of interpreted languages, for example), the SDM obtains the IDebugProgramNodeAttach2 interface from the IDebugProgramNode2 object associated with the program being attached to. Si le SDM peut obtenir le IDebugProgramNodeAttach2 le SDM interface, puis appelle la OnAttach (méthode).If the SDM can obtain the IDebugProgramNodeAttach2 interface, the SDM then calls the OnAttach method. Le IDebugProgramNodeAttach2::OnAttach retourne de la méthode S_OK pour indiquer qu’il n’avez pas attaché au programme et que les autres tentatives peuvent être apportées à joindre au programme.The IDebugProgramNodeAttach2::OnAttach method returns S_OK to indicate that it did not attach to the program and that other attempts can be made to attach to the program.

  2. Si le SDM peut obtenir le IDebugProgramEx2 de l’interface à partir du programme qui y sont attaché, les appels SDM le attacher (méthode).If the SDM can obtain the IDebugProgramEx2 interface from the program being attached to, the SDM calls the Attach method. Cette approche est généralement utilisée pour les programmes qui ont été lancées à distance par le fournisseur de port.This approach is typical for programs that were launched remotely by the port supplier.

  3. Si le programme ne peut pas être attaché via le IDebugProgramNodeAttach2::OnAttach ou IDebugProgramEx2::Attach méthodes, le SDM charge le moteur de débogage (si pas déjà fait) en appelant le CoCreateInstance (fonction), puis appelle la attacher (méthode).If the program cannot be attached through the IDebugProgramNodeAttach2::OnAttach or IDebugProgramEx2::Attach methods, the SDM loads the debug engine (if not already loaded) by calling the CoCreateInstance function and then calls the Attach method. Cette approche est généralement utilisée pour les programmes lancés localement par un fournisseur de port.This approach is typical for programs launched locally by a port supplier.

    Il est également possible pour un fournisseur de port personnalisé appeler le IDebugEngine2::Attach méthode dans l’implémentation du fournisseur de port personnalisé de la IDebugProgramEx2::Attach (méthode).It is also possible for a custom port supplier to call the IDebugEngine2::Attach method in the custom port supplier's implementation of the IDebugProgramEx2::Attach method. En général, dans ce cas, le fournisseur de port personnalisé lance le moteur de débogage sur l’ordinateur distant.Typically in this case, the custom port supplier launches the debug engine on the remote machine.

    Pièce jointe est obtenue lorsque le Gestionnaire de session de débogage (SDM) appelle le attacher (méthode).Attachment is achieved when the session debug manager (SDM) calls the Attach method.

    Si vous exécutez votre DE dans le même processus que l’application à déboguer, vous devez implémenter les méthodes suivantes de IDebugProgramNode2:If you run your DE in the same process as the application to be debugged, then you must implement the following methods of IDebugProgramNode2:

  1. Envoyer un IDebugEngineCreateEvent2 objet d’événement pour le SDM.Send an IDebugEngineCreateEvent2 event object to the SDM. Pour plus d’informations, consultez envoi d’événements.For more information, see Sending events.

  2. Appelez le GetProgramId méthode sur le IDebugProgram2 objet qui a été passé à la IDebugEngine2::Attach (méthode).Call the GetProgramId method on the IDebugProgram2 object that was passed to the IDebugEngine2::Attach method.

    Cette commande renvoie un GUID qui est utilisé pour identifier le programme.This returns a GUID that is used to identify the program. Le GUID doivent être stockées dans l’objet que représente l’ordinateur local du programme pour l’Allemagne, et il doit être retourné lorsque le IDebugProgram2::GetProgramId méthode est appelée sur le IDebugProgram2 interface.The GUID must be stored in the object that represents the local program to the DE, and it must be returned when the IDebugProgram2::GetProgramId method is called on the IDebugProgram2 interface.

    Note

    Si vous implémentez le IDebugProgramNodeAttach2 interface, le programme GUID est passé à la IDebugProgramNodeAttach2::OnAttach (méthode).If you implement the IDebugProgramNodeAttach2 interface, the program's GUID is passed to the IDebugProgramNodeAttach2::OnAttach method. Cela GUID est utilisé pour le programme GUID retourné par le IDebugProgram2::GetProgramId (méthode).This GUID is used for the program's GUID returned by the IDebugProgram2::GetProgramId method.

  3. Envoyer un IDebugProgramCreateEvent2 objet d’événement pour avertir le SDM qui local IDebugProgram2 objet a été créé pour représenter le programme pour l’Allemagne.Send an IDebugProgramCreateEvent2 event object to notify the SDM that the local IDebugProgram2 object was created to represent the program to the DE. Pour plus d’informations, consultez envoi des événements.For details, see Sending Events.

    Note

    Ce n’est pas le même IDebugProgram2 objet qui a été passée dans le IDebugEngine2::Attach (méthode).This is not the same IDebugProgram2 object that was passed into the IDebugEngine2::Attach method. Précédemment passé IDebugProgram2 objet est reconnu par le port uniquement et est un objet distinct.The previously passed IDebugProgram2 object is recognized by the port only and is a separate object.

Voir aussiSee also

Pièce jointe basée sur le lancement Launch-based attachment
Envoi d’événements Sending events
LaunchSuspended LaunchSuspended
IDebugProgram2 IDebugProgram2
IDebugProgramCreateEvent2 IDebugProgramCreateEvent2
IDebugProgramNodeAttach2 IDebugProgramNodeAttach2
OnAttach OnAttach
IDebugProgramNode2 IDebugProgramNode2
GetProgramId GetProgramId
IDebugProgramEx2 IDebugProgramEx2
Attacher Attach
AttacherAttach