Anfügen an das Programm
Nachdem Sie Ihre Programme mit dem entsprechenden Port registriert haben, müssen Sie den Debugger an das Programm anfügen, das Sie debuggen möchten.
Auswählen des Anfügens
Es gibt drei Möglichkeiten, wie der Sitzungsdebugmanager (SESSION Debug Manager, SDM) versucht, an das zu debuggende Programm anzufügen.
Für Programme, die vom Debugmodul über die LaunchSuspended-Methode gestartet werden (z. B. typisch für interpretierte Sprachen), ruft das SDM die IDebugProgramNodeAttach2-Schnittstelle aus dem IDebugProgramNode2-Objekt ab, das dem Programm zugeordnet ist, an das das Programm angefügt wird. Wenn die SDM die
IDebugProgramNodeAttach2
Schnittstelle abrufen kann, ruft die SDM dann die OnAttach-Methode auf. DieIDebugProgramNodeAttach2::OnAttach
Methode gibtS_OK
zurück, um anzugeben, dass sie nicht an das Programm angefügt wurde und dass andere Versuche unternommen werden können, an das Programm anzufügen.Wenn das SDM die IDebugProgramEx2-Schnittstelle aus dem Programm abrufen kann, an das das Programm angefügt wird, ruft die SDM die Attach-Methode auf. Dieser Ansatz ist typisch für Programme, die vom Portanbieter remote gestartet wurden.
Wenn das Programm nicht über die
IDebugProgramNodeAttach2::OnAttach
MethodenIDebugProgramEx2::Attach
oder Methoden angefügt werden kann, lädt das SDM das Debugmodul (sofern nicht bereits geladen), indem dieCoCreateInstance
Funktion aufgerufen und dann die Attach-Methode aufgerufen wird. Dieser Ansatz ist typisch für Programme, die von einem Portanbieter lokal gestartet werden.Es ist auch möglich, dass ein benutzerdefinierter Portlieferant die
IDebugEngine2::Attach
Methode in der Implementierung derIDebugProgramEx2::Attach
Methode des benutzerdefinierten Portlieferanten aufruft. In diesem Fall startet der benutzerdefinierte Portanbieter das Debugmodul auf dem Remotecomputer.Die Anlage wird erreicht, wenn der Sitzungsdebug-Manager (SDM) die Attach-Methode aufruft.
Wenn Sie Ihre DE im selben Prozess wie die zu debuggende Anwendung ausführen, müssen Sie die folgenden Methoden von IDebugProgramNode2 implementieren:
-
Führen Sie nach dem Aufrufen der
IDebugEngine2::Attach
Methode die folgenden Schritte in der Implementierung derIDebugEngine2::Attach
Methode aus:
Senden Sie ein IDebugEngineCreateEvent2-Ereignisobjekt an das SDM. Weitere Informationen finden Sie unter Senden von Ereignissen.
Rufen Sie die GetProgramId-Methode für das IDebugProgram2-Objekt auf, das an die
IDebugEngine2::Attach
Methode übergeben wurde.Dies gibt ein
GUID
, das verwendet wird, um das Programm zu identifizieren. DasGUID
Muss im Objekt gespeichert werden, das das lokale Programm für die DE darstellt, und es muss zurückgegeben werden, wenn dieIDebugProgram2::GetProgramId
Methode auf derIDebugProgram2
Schnittstelle aufgerufen wird.Hinweis
Wenn Sie die
IDebugProgramNodeAttach2
Schnittstelle implementieren, wird das ProgrammGUID
an dieIDebugProgramNodeAttach2::OnAttach
Methode übergeben. DiesGUID
wird für die von derIDebugProgram2::GetProgramId
Methode zurückgegebenen ProgrammeGUID
verwendet.Senden Sie ein IDebugProgramCreateEvent2-Ereignisobjekt , um das SDM zu benachrichtigen, dass das lokale
IDebugProgram2
Objekt erstellt wurde, um das Programm für die DE darzustellen. Ausführliche Informationen finden Sie unter Senden von Ereignissen.Hinweis
Dies ist nicht dasselbe
IDebugProgram2
Objekt, das an dieIDebugEngine2::Attach
Methode übergeben wurde. Das zuvor übergebeneIDebugProgram2
Objekt wird nur vom Port erkannt und ist ein separates Objekt.