Freigeben über


Direkt an ein Programm anhängen

Benutzer, die Programme in einem bereits laufenden Prozess debuggen wollen, folgen in der Regel diesem Verfahren:

  1. Öffnen Sie in der IDE das Menü Debug und wählen Sie den Befehl Attach to Process....

    Das Dialogfeld Attach to Process wird angezeigt, in dem alle auf dem Rechner installierten Debug Engines (DEs) aufgelistet sind.

  2. Geben Sie die DEs an, die zum Debuggen des ausgewählten Prozesses verwendet werden sollen, wählen Sie einen Prozess und klicken Sie auf die Schaltfläche Attach.

    Das Debug-Paket startet eine Debug-Sitzung und übergibt die Liste der DEs an sie. Die Debug-Sitzung übergibt diese Liste zusammen mit einer Callback-Funktion an den ausgewählten Prozess und fordert diesen dann auf, seine laufenden Programme aufzuzählen.

    Programmatisch, als Antwort auf die Benutzeranfrage, instanziiert das Debug-Paket den Sitzungs-Debug-Manager (SDM) und übergibt ihm die Liste der ausgewählten DEs. Zusammen mit der Liste übergibt das Debug-Paket dem SDM eine Schnittstelle IDebugEventCallback2. Das Debug-Paket übergibt die Liste der DEs an den ausgewählten Prozess durch den Aufruf IDebugProcess2::Attach. Der SDM ruft dann IDebugProcess2::EnumPrograms auf dem Port auf, um die im Prozess laufenden Programme aufzuzählen.

    Von diesem Zeitpunkt an wird jede Debug-Engine genau so an ein Programm angehängt, wie es in Anhängen nach einem Start beschrieben ist, mit zwei Ausnahmen.

    Aus Gründen der Effizienz werden DEs, die sich einen Adressraum mit dem SDM teilen sollen, so gruppiert, dass jedes DE eine Reihe von Programmen hat, an die es angehängt wird. In diesem Fall ruft IDebugProcess2 IDebugEngine2::Attach auf und übergibt ihm ein Array von Programmen, die angehängt werden sollen.

    Die zweite Ausnahme ist, dass die Startup-Ereignisse, die von einem DE gesendet werden, der an ein bereits laufendes Programm angehängt ist, normalerweise nicht das Einstiegspunkt-Ereignis enthalten.