Freigeben über


Programm starten

Benutzer, die ein Programm debuggen möchten, können F5 drücken, um den Debugger über die IDE auszuführen. Dies beginnt eine Reihe von Ereignissen, die letztendlich dazu führen, dass die IDE eine Verbindung mit einem Debugmodul (DE) herstellt, das wiederum verbunden oder an das Programm angefügt ist:

  1. Die IDE ruft zuerst das Projektpaket auf, um die aktiven Projekt-Debugeinstellungen der Lösung abzurufen. Die Einstellungen umfassen das Startverzeichnis, die Umgebungsvariablen, den Port, in dem das Programm ausgeführt wird, und die DE, die zum Erstellen des Programms verwendet werden soll, sofern angegeben. Diese Einstellungen werden an das Debugpaket übergeben.

  2. Wenn eine DE angegeben ist, ruft die DE das Betriebssystem auf, um das Programm zu starten. Infolge des Startens des Programms wird die Runtime-Umgebung des Programms geladen. Wenn beispielsweise ein Programm in MSIL geschrieben wird, wird die Common Language Runtime aufgerufen, um das Programm auszuführen.

    Oder

    Wenn kein DE angegeben ist, ruft der Port das Betriebssystem auf, um das Programm zu starten, wodurch die Runtime-Umgebung des Programms geladen wird.

    Hinweis

    Wenn eine DE verwendet wird, um ein Programm zu starten, ist es wahrscheinlich, dass derselbe DE an das Programm angefügt wird.

  3. Je nachdem, ob die DE oder der Port das Programm gestartet hat, erstellt die DE oder die Runtime-Umgebung dann eine Programmbeschreibung oder einen Knoten und benachrichtigt den Port, dass das Programm ausgeführt wird.

    Hinweis

    Es wird empfohlen, dass die Runtime-Umgebung den Programmknoten erstellt, da der Programmknoten eine einfache Darstellung eines Programms ist, das gedebuggt werden kann. Es ist nicht erforderlich, eine gesamte DE zu laden, nur um einen Programmknoten zu erstellen und zu registrieren. Wenn die DE so konzipiert ist, dass sie im Prozess der IDE ausgeführt wird, aber keine IDE ausgeführt wird, muss eine Komponente vorhanden sein, die dem Port einen Programmknoten hinzufügen kann.

    Das neu erstellte Programm zusammen mit anderen Programmen, verwandten oder nicht verknüpften, gestarteten oder angefügten Programmen aus derselben IDE erstellt eine Debugsitzung.

    Wenn der Benutzer zum ersten Mal F5 drückt, ruft das Debugpaket von Visual Studio das Projektpaket (das dem Typ des gestarteten Programms zugeordnet ist) über die DebugLaunch Methode, aus, die wiederum eine VsDebugTargetInfo2 Struktur mit den aktiven Projektdebug-Einstellungen der Lösung ausfüllt. Diese Struktur wird über einen Aufruf der LaunchDebugTargets2 Methode zurück an das Debugpaket übergeben. Das Debugpaket instanziiert dann den Sitzungsdebug-Manager (SDM), der das zu debuggende Programm und alle zugehörigen Debug-Engine startet.

    Eines der Argumente, die an das SDM übergeben werden, ist die GUID der DE, die zum Starten des Programms verwendet werden soll.

    Wenn die DE-GUID nicht GUID_NULL ist, erstellt die SDM die DE mit und ruft dann die LaunchSuspended-Methode auf, um das Programm zu starten. Wenn z. B. ein Programm in systemeigenem Code geschrieben wird, wird IDebugEngineLaunch2::LaunchSuspended wahrscheinlich CreateProcess und ResumeThread aufrufen (Win32-Funktionen) zum Ausführen des Programms.

    Infolge des Startens des Programms wird die Laufzeit-Umgebung des Programms geladen. Entweder die DE- oder die Laufzeitumgebung erstellt dann eine IDebugProgramNode2-Schnittstelle zum Beschreiben des Programms und übergibt diese Schnittstelle an AddProgramNode, um den Port zu benachrichtigen, dass das Programm ausgeführt wird.

    Wenn GUID_NULL der weitergegeben wird, startet der Port das Programm. Sobald das Programm ausgeführt wird, erstellt die Laufzeitumgebung eine IDebugProgramNode2 Schnittstelle zum Beschreiben des Programms und übergibt es an IDebugPortNotify2::AddProgramNode. Dadurch wird der Port benachrichtigt, dass das Programm ausgeführt wird. Anschließend fügt das SDM das Debugmodul an das ausgeführte Programm an.

In diesem Abschnitt

Wenn Sie den Port benachrichtigen, wird erläutert, was passiert, nachdem ein Programm gestartet wurde und der Port benachrichtigt wird.

Anfügen nach einem Start dokumentiert, wenn die Debugsitzung bereit ist, die DE an das Programm anzufügen.

  • Debug-Aufgaben enthält Links zu verschiedenen Debug-Aufgaben, wie z. B. das Starten eines Programms und das Auswerten von Ausdrücken.