Freigeben über


Starten eines Programms

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 Projektdebugeinstellungen 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 Laufzeitumgebung 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 Laufzeitumgebung 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 Laufzeitumgebung dann eine Programmbeschreibung oder einen Knoten und benachrichtigt den Port, dass das Programm ausgeführt wird.

    Hinweis

    Es wird empfohlen, dass die Laufzeitumgebung 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 auf, die wiederum eine VsDebugTargetInfo2 Struktur mit den aktiven Projektdebugeinstellungen 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 Debugmodule 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, wird die DE von der SDM mit erstellt, und anschließend wird die LaunchSuspended-Methode aufgerufen, um das Programm zu starten. Wenn zum Beispiel ein Programm in systemeigenem Code geschrieben wird, wird es wahrscheinlich IDebugEngineLaunch2::LaunchSuspended aufrufen und ResumeThread und CreateProcess (Win32-Funktionen), um das Programm auszuführen.

    Infolge des Startens des Programms wird die Laufzeitumgebung 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 übergeben 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 Startvorgang, wenn die Debugsitzung bereit ist, das DE an das Programm anzuhängen.

  • Debugaufgaben enthalten Links zu verschiedenen Debugaufgaben, z. B. starten eines Programms und Auswerten von Ausdrücken.