Attacher au programme
Une fois que vous avez inscrit vos programmes avec le port approprié, vous devez attacher le débogueur au programme que vous souhaitez déboguer.
Choisir comment attacher
Il existe trois façons dont le gestionnaire de débogage de session (SDM) tente d’attacher le programme en cours de débogage.
Pour les programmes lancés par le moteur de débogage via la méthode LaunchSuspended (typique des langages interprétés, par exemple), le SDM obtient l’interface IDebugProgramNodeAttach2 à partir de l’objet IDebugProgramNode2 associé au programme attaché. Si le SDM peut obtenir l’interface
IDebugProgramNodeAttach2
, le SDM appelle ensuite la méthode OnAttach . LaIDebugProgramNodeAttach2::OnAttach
méthode retourneS_OK
pour indiquer qu’elle n’a pas attaché au programme et que d’autres tentatives peuvent être effectuées pour l’attacher au programme.Si le SDM peut obtenir l’interface IDebugProgramEx2 du programme attaché, le SDM appelle la méthode Attach . Cette approche est généralement destinée aux programmes qui ont été lancés à distance par le fournisseur de ports.
Si le programme ne peut pas être attaché par le biais des méthodes ou des
IDebugProgramNodeAttach2::OnAttach
méthodes, le SDM charge le moteur de débogage (s’il n’est pas déjà chargé) en appelant laCoCreateInstance
fonction, puis appelle la méthode Attach.IDebugProgramEx2::Attach
Cette approche est typique des programmes lancés localement par un fournisseur de ports.Il est également possible pour un fournisseur de ports personnalisé d’appeler la
IDebugEngine2::Attach
méthode dans l’implémentation du fournisseur de ports personnalisé de laIDebugProgramEx2::Attach
méthode. En règle générale, dans ce cas, le fournisseur de ports personnalisé lance le moteur de débogage sur l’ordinateur distant.La pièce jointe est obtenue lorsque le gestionnaire de débogage de session (SDM) appelle la méthode Attach .
Si vous exécutez votre DE dans le même processus que l’application à déboguer, vous devez implémenter les méthodes suivantes d’IDebugProgramNode2 :
-
Une fois la
IDebugEngine2::Attach
méthode appelée, procédez comme suit dans votre implémentation de laIDebugEngine2::Attach
méthode :
Envoyez un objet d’événement IDebugEngineCreateEvent2 au SDM. Pour plus d’informations, consultez Envoi d’événements.
Appelez la méthode GetProgramId sur l’objet IDebugProgram2 passé à la
IDebugEngine2::Attach
méthode.Cela retourne un
GUID
élément utilisé pour identifier le programme. DoitGUID
être stocké dans l’objet qui représente le programme local dans le DE, et il doit être retourné lorsque laIDebugProgram2::GetProgramId
méthode est appelée sur l’interfaceIDebugProgram2
.Remarque
Si vous implémentez l’interface
IDebugProgramNodeAttach2
GUID
, le programme est transmis à laIDebugProgramNodeAttach2::OnAttach
méthode. Cette méthodeGUID
est utilisée pour lesIDebugProgram2::GetProgramId
retours duGUID
programme.Envoyez un objet d’événement IDebugProgramCreateEvent2 pour informer le SDM que l’objet local
IDebugProgram2
a été créé pour représenter le programme au DE. Pour plus d’informations, consultez Envoi d’événements.Remarque
Ce n’est pas le même
IDebugProgram2
objet qui a été passé dans laIDebugEngine2::Attach
méthode. L’objet précédemment passéIDebugProgram2
est reconnu par le port uniquement et est un objet distinct.