Debugging von mindestens einem Prozess in Visual Studio
Hier werden folgende Themen beschrieben: Starten von Debuggingprozessen, Wechseln zwischen Prozessen, Unterbrechen und Fortsetzen der Ausführung, schrittweises Ausführen des Quellcodes, Anhalten des Debuggings sowie Beenden und Abtrennen von Prozessen.
Inhalt
Konfigurieren des Ausführungsverhaltens mehrerer Prozesse
Suchen der Quell- und Symboldateien (PDB-Dateien)
Starten von mehreren Prozessen in einer VS-Projektmappe, Anfügen an einen Prozess, automatisches Starten eines Prozesses im Debugger
Wechseln zwischen Prozessen, Unterbrechen und Fortsetzen der Ausführung, schrittweises Ausführen des Quellcodes
Anhalten des Debuggings, Beenden und Abtrennen von Prozessen
Konfigurieren des Ausführungsverhaltens mehrerer Prozesse
Wenn standardmäßig mehrere Prozesse im Debugger ausgeführt werden, wirken sich die Befehle für Unterbrechen, Durchlaufen und Beenden des Debuggers normalerweise auf alle Prozesse aus. Wenn beispielsweise ein Prozess an einem Haltepunkt angehalten wird, wird die Ausführung aller anderen Prozesse auch angehalten. Sie können dieses Standardverhalten ändern, um mehr Kontrolle über die Ziele von Ausführungsbefehlen zu erhalten.
Klicken Sie im Menü Debuggen auf Optionen und Einstellungen.
Deaktivieren Sie im Dialogfeld Debugging auf der Seite Allgemein das Kontrollkästchen Alle Prozesse anhalten, wenn ein Prozess anhält.
Inhalt
Suchen der Quell- und Symboldateien (PDB-Dateien)
Um zum Quellcode eines Prozesses zu navigieren, muss der Debugger Zugriff auf die Quell- und Symboldateien des Prozesses haben. Siehe Angeben von Symbol(PDB)- und Quelldateien im Visual Studio Debugger.
Wenn Sie nicht auf die Dateien eines Prozesses zugreifen können, können Sie mithilfe des Disassemblyfensters navigieren. Siehe Gewusst wie: Verwenden des Fensters "Disassembly".
Inhalt
Starten von mehreren Prozessen in einer VS-Projektmappe, Anfügen an einen Prozess, automatisches Starten eines Prozesses im Debugger
- Debuggen von mehreren Prozessen in einer Visual Studio-Projektmappe • Ändern des Startprojekts • Starten eines bestimmten Projekts in einer Projektmappe • Starten von mehreren Projekten in einer Projektmappe • Anfügen an einen Prozess • Automatisches Starten eines Prozesses im Debugger
Hinweis
Auch wenn sich das untergeordnete Projekt in derselben Projektmappe befindet, wird der Debugger nicht automatisch an einen untergeordneten Prozess angefügt, der durch einen debuggten Prozess gestartet wird.So debuggen Sie einen untergeordneten Prozess
-
Fügen Sie den Debugger an den untergeordneten Prozess an, nachdem dieser gestartet wurde.
- oder -
-
Konfigurieren Sie Windows so, dass der untergeordnete Prozess in einer neuen Instanz des Debuggers automatisch gestartet wird.
Debuggen von mehreren Prozessen in einer Visual Studio-Projektmappe
Wenn Sie mehr als ein Projekt in einer Visual Studio-Projektmappe haben, die unabhängig ausgeführt werden kann (Projekte, die in separaten Prozessen ausgeführt werden), können Sie auswählen, welche Projekte vom Debugger gestartet werden.
Ändern des Startprojekts
Um das Startprojekt für eine Projektmappe zu ändern, wählen Sie das Projekt im Projektmappen-Explorer aus, und wählen Sie anschließend im Kontextmenü die Option Als Startprojekt festlegen.
Starten eines bestimmten Projekts in einer Projektmappe
Um ein Projekt für eine Projektmappe ohne Ändern des Standardstartprojekts zu starten, wählen Sie es im Projektmappen-Explorer aus, und wählen Sie anschließend im Kontextmenü die Option Debuggen. Sie können dann die Option Neue Instanz starten oder In neue Instanz springen wählen.
Inhalt
Starten mehrerer Projekte in einer Projektmappe
Wählen Sie die Projektmappe im Projektmappen-Explorer aus, und wählen dann im Kontextmenü die Option Eigenschaften.
Wählen Sie im Dialogfeld Eigenschaften die Optionen Allgemeine Eigenschaften und Startprojekt aus.
Für jedes Projekt, das Sie ändern möchten, wählen Sie entweder Starten, Starten ohne Debugging oder Keine aus.
Inhalt
Anfügen an einen Prozess
Der Debugger kann auch an Programme angefügt werden, die in Prozessen außerhalb von Visual Studio ausgeführt werden, einschließlich Programme, die auf einem Remotegerät ausgeführt werden. Nachdem Sie den Debugger an ein Programm angefügt haben, können Sie dessen Ausführungsbefehle verwenden, den Programmzustand überprüfen usw. Die Möglichkeiten zum Überprüfen des Programms sind ggf. eingeschränkt. Dies hängt davon ab, ob das Programm mit Debuginformationen erstellt wurde, ob Sie Zugriff auf den Quellcode des Programms haben und ob der JIT-Compiler der Common Language Runtime die Debuginformationen verfolgt.
Weitere Informationen finden Sie unter Anfügen an laufende Prozesse mit dem Visual Studio Debugger.
Anfügen an einen auf dem lokalen Computer ausgeführten Prozess
Wählen Sie Debuggen, An den Prozess anhängen aus. Wählen Sie den Prozess im Dialogfeld An den Prozess anhängen in der Liste Verfügbare Prozesse aus, und klicken Sie dann auf Anfügen.
Inhalt
Automatisches Starten eines Prozesses im Debugger
In bestimmten Fällen müssen Sie möglicherweise den Startcode für ein Programm debuggen, das von einem anderen Prozess gestartet wird. Zu den Beispielen hierfür gehören Dienste und benutzerdefinierte Setupaktionen. Für diese Szenarios können Sie festlegen, dass der Debugger beim Starten der Anwendung gestartet und automatisch an die Anwendung angefügt wird.
Starten Sie den Registrierungs-Editor (regedit.exe).
Suchen Sie den Ordner HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options.
Wählen Sie den Ordner der Anwendung aus, die Sie im Debugger starten möchten.
Wenn der Name der Anwendung nicht als untergeordneter Ordner aufgeführt wird, wählen Sie die Option für Bilddatei-Ausführungsoptionen aus, und wählen Sie dann im Kontextmenü die Optionen Schlüssel, Neu aus. Wählen Sie den neuen Schlüssel aus, klicken Sie im Kontextmenü auf Umbenennen, und geben Sie dann den Namen der Anwendung ein.
Klicken Sie im Kontextmenü des Anwendungsordners auf Neu, Zeichenfolgenwert.
Ändern Sie den Namen des neuen Werts von New Value zu Debugger.
Klicken Sie im Kontextmenü des Debuggereintrags auf Anpassen.
Geben Sie im Dialogfeld "Zeichenfolgenwerte bearbeiten" den Eintrag vsjitdebugger.exe im Feld Wertdaten ein.
Inhalt
Wechseln zwischen Prozessen, Unterbrechen und Fortsetzen der Ausführung, schrittweises Ausführen des Quellcodes
- Wechseln zwischen Prozessen • Befehle für Unterbrechen, Durchlaufen und Fortsetzen
Wechseln zwischen Prozessen
Sie können beim Debuggen mit mehreren Prozessen verbunden sein, es ist jedoch jeweils nur ein Prozess im Debugger aktiv. Sie können den aktiven oder aktuellen Prozess auf der Symbolleiste "Debugspeicherort" oder im Fenster Prozesse festlegen. Um zwischen den Prozessen zu wechseln, müssen sich beide Prozesse im Unterbrechungsmodus befinden.
So legen Sie den aktuellen Prozess fest
Klicken Sie auf der Symbolleiste "Debugspeicherort" auf Prozess, um das Listenfeld Prozess anzuzeigen. Wählen Sie den Prozess aus, den Sie als aktuellen Prozess festlegen möchten.
Wenn die Symbolleiste Debugspeicherort nicht sichtbar ist, wählen Sie Extras, Anpassen aus. Klicken Sie auf der Registerkarte Symbolleisten auf Debugspeicherort.
Öffnen Sie das Fenster Prozesse (Verknüpfung Ctrl+Alt+Z), suchen Sie den Prozess, den Sie als aktuellen Prozess festlegen möchten, und doppelklicken Sie darauf.
Der aktuelle Prozess ist durch einen gelben Pfeil gekennzeichnet.
Wenn Sie zu einem Projekt wechseln, wird dieses als aktueller Prozess zum Debuggen festgelegt. In den angezeigten Debuggerfenstern ist der Zustand für den aktuellen Prozess angegeben, und alle Befehle für die schrittweise Ausführung beeinflussen nur den aktuellen Prozess.
Inhalt
Befehle für Unterbrechen, Durchlaufen und Fortsetzen
Hinweis
Standardmäßig beeinflussen die Debuggerbefehle für Unterbrechen, Durchlaufen und Fortsetzen sämtliche Prozesse, die debuggt werden.Um dieses Verhalten zu ändern, finden Sie unter Konfigurieren des Ausführungsverhaltens mehrerer Prozesse
Befehl |
Alle Prozesse anhalten, wenn ein Prozess anhält Aktiviert (Standard) |
Alle Prozesse anhalten, wenn ein Prozess anhält Gelöscht |
Menü Debuggen:
|
Alle Prozesse werden unterbrochen. |
Alle Prozesse werden unterbrochen. |
Menü Debuggen:
|
Alle Prozesse werden fortgesetzt. |
Alle angehaltenen Prozesse werden fortgesetzt. |
Menü Debuggen:
|
Alle Prozesse werden während der aktuellen Prozessschritte ausgeführt. Anschließend werden alle Prozesse unterbrochen. |
Aktuelle Prozessschritte. Angehaltene Prozesse werden fortgesetzt. Ausgeführte Prozesse werden fortgesetzt. |
Menü Debuggen:
|
Nicht zutreffend |
Aktuelle Prozessschritte. Andere Prozesse behalten ihren vorhandenen Zustand bei (angehaltener Zustand oder Ausführzustand). |
Quellcodefenster
|
Alle Prozesse werden unterbrochen. |
Nur der Prozess im Quellcodefenster wird unterbrochen. |
Kontextmenü des Quellcodefensters:
Das Quellcodefenster muss sich im aktuellen Prozess befinden. |
Alle Prozesse werden ausgeführt, während der Prozess im Quellcodefenster bis zum Cursor ausgeführt und dann unterbrochen wird. Anschließend werden alle anderen Prozesse unterbrochen. |
Der Prozess im Quellcodefenster wird bis zum Cursor ausgeführt. Andere Prozesse behalten ihren vorhandenen Zustand bei (angehaltener Zustand oder Ausführzustand). |
Kontextmenü des Fensters Prozesse:
|
Nicht zutreffend |
Der ausgewählte Prozess wird angehalten. Andere Prozesse behalten ihren vorhandenen Zustand bei (angehaltener Zustand oder Ausführzustand). |
Kontextmenü des Fensters Prozesse:
|
Nicht zutreffend |
Der ausgewählte Prozess wird fortgesetzt. Andere Prozesse behalten ihren vorhandenen Zustand bei (angehaltener Zustand oder Ausführzustand). |
Inhalt
Anhalten des Debuggings, Beenden und Abtrennen von Prozessen
- Befehle für Anhalten, Beenden und Abtrennen
Durch Auswählen von Debuggen, Debuggen beenden, während mehrere Prozesse im Debugger geöffnet sind, beendet der Debugger standardmäßig alle Prozesse bzw. wird von allen Prozessen getrennt. Dies hängt davon ab, wie der Prozess im Debugger geöffnet war:
Wenn der aktuelle Prozess im Debugger gestartet wurde, wird dieser Prozess beendet.
Wenn der Debugger an den aktuellen Prozess angefügt wurde, wird er vom Prozess getrennt. Der Prozess wird weiterhin ausgeführt.
Wenn Sie beispielsweise das Debuggen eines Prozesses aus einer Visual Studio-Projektmappe gestartet haben, fügen Sie den Debugger an einen anderen, bereits ausgeführten Prozess an, und wählen Sie dann Debuggen beenden. Die Debugsitzung und der in Visual Studio gestartete Prozess werden beendet, während der angefügte Prozess weiterhin ausgeführt wird. Sie können die folgenden Schritte ausführen, um die Methode zum Beenden des Debuggings festzulegen.
Hinweis
Die Option Alle Prozesse anhalten, wenn ein Prozess anhält beeinflusst nicht das Anhalten des Debuggings bzw. das Beenden und Abtrennen von Prozessen.
So ändern Sie die Einstellung, wie "Debuggen beenden" einen einzelnen Prozess beeinflusst
- Öffnen Sie das Fenster Prozesse (Verknüpfung Ctrl+Alt+Z). Wählen Sie einen Prozess aus, und aktivieren oder deaktivieren Sie das Kontrollkästchen Nach Beenden des Debuggings trennen.
Befehle für Anhalten, Beenden und Abtrennen
Befehl |
Beschreibung |
Menü Debuggen:
|
Es sei denn, das Verhalten wird von der Option Nach Beenden des Debuggings trennen im Fenster Prozesse geändert:
|
Menü Debuggen:
|
Alle Prozesse werden beendet. |
Menü Debuggen:
|
Der Debugger wird von allen Prozessen getrennt. |
Kontextmenü des Fensters Prozesse:
|
Der Debugger wird vom ausgewählten Prozess getrennt. Andere Prozesse behalten ihren vorhandenen Zustand bei (angehaltener Zustand oder Ausführzustand). |
Kontextmenü des Fensters Prozesse:
|
Der ausgewählte Prozess wird beendet. Andere Prozesse behalten ihren vorhandenen Zustand bei (angehaltener Zustand oder Ausführzustand). |
Kontextmenü des Fensters Prozesse:
|
Wechselt zwischen dem Verhalten von Debuggen und Debuggen beenden für den ausgewählten Prozess:
|
Anhalten des Debuggings, Beenden und Abtrennen von Prozessen
Inhalt
Siehe auch
Konzepte
Just-In-Time-Debuggen in Visual Studio
Weitere Ressourcen
Angeben von Symbol(PDB)- und Quelldateien im Visual Studio Debugger