Freigeben über


Debuggen mehrerer Prozesse (C#, Visual Basic, C++)

Visual Studio kann eine Lösung mit mehreren Prozessen debuggen. Sie können Prozesse starten und wechseln, einen Haltepunkt setzen, fortfahren und den Quellcode schrittweise durchlaufen, das Debugging beenden und Prozesse einzeln beenden oder trennen.

Debugging mit mehreren Prozessen starten

Wenn mehrere Projekte in einer Visual Studio-Projektmappe unabhängig ausgeführt werden können, können Sie auswählen, welches Projekt der Debugger startet. Das aktuelle Startprojekt wird im Projektmappen-Explorer fett formatiert angezeigt.

Um das Startprojekt zu ändern, klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf ein anderes Projekt, und wählen Sie "Als Startprojekt festlegen" aus.

Wenn Sie mit dem Debuggen eines Projekts im Projektmappen-Explorer beginnen möchten, ohne es zum Startprojekt zu machen, klicken Sie mit der rechten Maustaste auf das Projekt, und wählen Sie "Neue>Instanz starten" oder "Schritt in neue Instanz" aus.

So legen Sie das Startprojekt oder mehrere Projekte in den Eigenschaften der Projektmappe fest:

  1. Wählen Sie die Projektmappe im Projektmappen-Explorer aus, und wählen Sie dann das Symbol "Eigenschaften" in der Symbolleiste aus, oder klicken Sie mit der rechten Maustaste auf die Projektmappe, und wählen Sie "Eigenschaften" aus.

  2. Wählen Sie auf der Seite "Eigenschaften" die Option "Common Properties>Startup Project" aus.

    Ändern des Starttyps für ein Projekt

  3. Wählen Sie "Aktuelle Auswahl", "Einzelnes Startprojekt " und eine Projektdatei oder "Mehrere Startprojekte" aus.

    Wenn Sie mehrere Startprojekte auswählen, können Sie die Startreihenfolge und die für jedes Projekt auszuführenden Aktionen ändern: "Starten", "Starten" ohne Debugging oder "Keine".

  4. Wählen Sie "Übernehmen" oder "OK", um die Änderungen zu übernehmen und das Dialogfeld zu schließen.

Anfügen an einen Prozess

Der Debugger kann auch an Apps angehängt werden, die in Prozessen außerhalb von Visual Studio ausgeführt werden, einschließlich auf Remote-Geräten. Nachdem Sie eine App angefügt haben, können Sie den Visual Studio-Debugger verwenden. Debugging-Funktionen könnten eingeschränkt sein. Es hängt davon ab, ob die App mit Debuginformationen erstellt wurde, ob Sie Zugriff auf den Quellcode der App haben und ob der JIT-Compiler Debuginformationen nachverfolgt.

Weitere Informationen finden Sie unter Anfügen an ausgeführte Prozesse.

Um sich mit einem laufenden Prozess zu verbinden:

  1. Wenn die App läuft, wählen Sie Debug>An Prozess anhängen aus.

    Dialogfeld 'An Prozess anfügen'

  2. Wählen Sie im Dialogfeld "An Prozess anfügen " den Prozess aus der Liste "Verfügbare Prozesse " aus, und wählen Sie dann "Anfügen" aus.

Hinweis

Der Debugger bindet sich nicht automatisch an einen von einem zu debuggenden Prozess gestarteten untergeordneten Prozess, selbst wenn sich das untergeordnete Projekt in derselben Lösung befindet. Zum Debuggen eines untergeordneten Prozesses hängen Sie entweder nach dem Start an den untergeordneten Prozess an, oder konfigurieren Sie den Windows-Registrierungs-Editor, damit der untergeordnete Prozess in einer neuen Debuggerinstanz gestartet wird.

Verwenden des Registrierungs-Editors zum automatischen Starten eines Prozesses im Debugger

Manchmal müssen Sie den Startcode für eine App debuggen, die von einem anderen Prozess gestartet wird. Beispiele sind Dienste und benutzerdefinierte Einrichtungsaktionen. Sie können den Debugger starten und automatisch an die App anfügen.

  1. Starten Sie den Windows-Registrierungs-Editor, indem Sie regedit.exeausführen.

  2. Navigieren Sie im Registrierungs-Editor zu HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options.

  3. Wählen Sie den Ordner der App aus, die Sie im Debugger starten möchten.

    Wenn die App nicht als untergeordneter Ordner aufgeführt ist, klicken Sie mit der rechten Maustaste auf "Bilddateiausführungsoptionen", wählen Sie "Neuer Schlüssel"> aus, und geben Sie den App-Namen ein. Oder klicken Sie mit der rechten Maustaste auf den neuen Schlüssel in der Struktur, wählen Sie "Umbenennen" aus, und geben Sie dann den App-Namen ein.

  4. Klicken Sie mit der rechten Maustaste auf den neuen Schlüssel in der Struktur, und wählen Sie "Neuer Zeichenfolgenwert"> aus.

  5. Ändern Sie den Namen des neuen Werts von New Value #1 in debugger.

  6. Klicken Sie mit der rechten Maustaste auf den Debugger , und wählen Sie "Ändern" aus.

    Dialogfeld 'Zeichenfolge bearbeiten'

  7. Geben Sie im Dialogfeld "vsjitdebugger.exe" das Feld "Wertdaten" ein, und wählen Sie dann "OK" aus.

    Eintrag für den automatischen Debuggerstart in regedit.exe

Debuggen mit mehreren Prozessen

Beim Debuggen einer App mit mehreren Prozessen wirken sich die unterbrechungs-, schrittweisen und fortlaufenden Debuggerbefehle standardmäßig auf alle Prozesse aus. Wenn beispielsweise ein Prozess an einem Haltepunkt angehalten wird, wird auch die Ausführung aller anderen Prozesse angehalten. Sie können dieses Standardverhalten ändern, um mehr Kontrolle über die Ziele von Ausführungsbefehlen zu erlangen.

So ändern Sie, ob alle Prozesse angehalten werden, wenn ein Prozess unterbrochen wird:

  1. Erweitern Sie im Bereich "Extras" (oder "Debugoptionen") > den Abschnitt "Alle Einstellungen>>".
  1. Erweitern Sie im Dialogfeld "Extras" (oder "Debugoptionen") > den Abschnitt "Debugging>".
  1. Aktivieren oder deaktivieren Sie das Kontrollkästchen "Alle Prozesse unterbrechen", wenn ein Vorgang unterbrochen wird.

Befehle "Unterbrechen", "Schritt", "Weiter"

In der folgenden Tabelle werden die Verhaltensweisen von Debugbefehlen beschrieben, wenn das Kontrollkästchen "Alle Prozesse unterbrechen" aktiviert oder deaktiviert wird:

Befehl Ausgewählt Abgewählt
Debuggen>Alle Prozesse anhalten Alle Prozesse brechen auf. Alle Prozesse brechen auf.
Debuggen>Fortsetzen Alle Prozesse werden fortgesetzt. Alle angehaltenen Prozesse werden fortgesetzt.
Debuggen>Einschritt, Schrittüberspringen, oder Ausschritt Alle Prozesse werden während der aktuellen Prozessschritte ausgeführt.
Dann brechen alle Prozesse ab.
Aktuelle Prozessschritte.
Angehaltene Prozesse werden fortgesetzt.
Laufende Prozesse werden fortgesetzt.
Debuggen>Schritt in aktuellen Prozess, Schritt über den aktuellen Prozess oder Ausführen des aktuellen Prozesses N/A Aktuelle Prozessschritte.
Andere Prozesse behalten ihren vorhandenen Zustand (angehalten oder ausgeführt) bei.
Quellfenster Haltepunkt Alle Prozesse brechen auf. Nur der Prozess des Quellfensters wird unterbrochen.
Quellfenster zum Cursor ausführen
Das Quellfenster muss sich im aktuellen Prozess befinden.
Alle Prozesse laufen, während der Quellfensterprozess bis zum Cursor läuft und dann anhält.
Dann brechen alle anderen Prozesse auf.
Der Quellfensterprozess wird an den Cursor ausgeführt.
Andere Prozesse behalten ihren vorhandenen Zustand (angehalten oder ausgeführt) bei.
Prozesse Fenster >Prozess unterbrechen N/A Ausgewählte Prozessunterbrechungen.
Andere Prozesse behalten ihren vorhandenen Zustand (angehalten oder ausgeführt) bei.
Prozesse Fenster>Prozess fortsetzen N/A Der ausgewählte Prozess setzt sich fort.
Andere Prozesse behalten ihren vorhandenen Zustand (angehalten oder ausgeführt) bei.

Suchen der Quell- und Symboldateien (PDB)

Um im Quellcode eines Prozesses zu navigieren, benötigt der Debugger Zugriff auf seine Quelldateien und Symboldateien. Weitere Informationen finden Sie unter Angeben von Symboldateien (PDB) und Quelldateien.

Wenn Sie nicht auf die Dateien für einen Prozess zugreifen können, können Sie mithilfe des Fensters "Disassembly " navigieren. Weitere Informationen finden Sie unter So verwenden Sie das Disassembly-Fenster.

Wechseln zwischen Prozessen

Sie können mehrere Prozesse beim Debuggen anfügen, aber nur ein Prozess ist jederzeit im Debugger aktiv. Sie können den aktiven oder aktuellen Prozess in der Symbolleiste 'Debug-Standort' oder im Fenster Prozesse festlegen. Um zwischen Prozessen zu wechseln, müssen sich beide Prozesse im Unterbrechungsmodus befinden.

So legen Sie den aktuellen Prozess in der Symbolleiste "Debug-Standort" fest:

  1. Wählen Sie zum Öffnen der Symbolleiste "Debug Location" die Option Ansicht>Symbolleisten>Debug Location aus.

  2. Wählen Sie während des Debuggens auf der Symbolleiste " Debugspeicherort " den Prozess aus, den Sie als aktuellen Prozess aus der Dropdownliste " Prozess " festlegen möchten.

    Wechseln zwischen Prozessen

So legen Sie den aktuellen Prozess aus dem Fenster "Prozesse" fest:

  1. Um das Fenster "Prozesse" beim Debuggen zu öffnen, wählen Sie"Windows-Prozesse>debuggen"> aus.

  2. Im Fenster "Prozesse " wird der aktuelle Prozess durch einen gelben Pfeil markiert. Doppelklicken Sie auf den Prozess, den Sie als aktuellen Prozess festlegen möchten.

    Fenster

Wenn Sie zu einem Prozess wechseln, wird er als aktueller Prozess für Debuggingzwecke festgelegt. Debuggerfenster zeigen den Status für den aktuellen Prozess an, und Schrittbefehle wirken sich nur auf den aktuellen Prozess aus.

Beenden Sie das Debugging mit mehreren Prozessen

Wenn Sie Debuggen>Debuggen beenden auswählen, endet der Debugger oder wird von allen Prozessen getrennt.

  • Wenn der aktuelle Prozess im Debugger gestartet wurde, wird der Prozess beendet.

  • Wenn Sie den Debugger an den aktuellen Prozess angefügt haben, wird der Debugger vom Prozess getrennt und der Prozess bleibt laufen.

Wenn Sie mit dem Debuggen eines Prozesses aus einer Visual Studio-Lösung beginnen, fügen Sie einen anderen Prozess an, der bereits ausgeführt wird, und wählen Sie dann "Debuggen beenden" aus, und die Debugsitzung wird beendet. Der Prozess, der in Visual Studio gestartet wurde, endet, während der Prozess, den Sie angefügt haben, weiterhin ausgeführt wird.

Um zu steuern, wie Stop Debugging einen einzelnen Prozess beeinflusst, klicken Sie im Prozesse-Fenster mit der rechten Maustaste auf einen Prozess, und aktivieren oder deaktivieren Sie dann das Kontrollkästchen Trennen, wenn Debuggen gestoppt wird.

Hinweis

The Break all processes when one process breaks-Debugger-Option beeinflusst das Anhalten, Beenden oder Trennen von Prozessen nicht.

Befehle anhalten, beenden und trennen

In der folgenden Tabelle werden die Verhaltensweisen der Debugger-Befehle 'Stopp', 'Beenden' und 'Trennen' bei mehreren Prozessen beschrieben.

Befehl Beschreibung
Debuggen>Debuggen beenden Sofern das Verhalten nicht im Fenster "Prozesse " geändert wird, werden prozesse, die vom Debugger gestartet werden, beendet, und angefügte Prozesse werden getrennt.
Debuggen>Alle beenden Alle Prozesse werden beendet.
Debuggen>Alle abtrennen Der Debugger wird von allen Prozessen getrennt.
Fenster "Prozesse" >Prozess löschen Der Debugger wird vom ausgewählten Prozess getrennt.
Andere Prozesse behalten ihren vorhandenen Zustand (angehalten oder ausgeführt) bei.
Fenster "Prozesse" Prozess beenden Der ausgewählte Prozess wird beendet.
Andere Prozesse behalten ihren vorhandenen Zustand (angehalten oder ausgeführt) bei.
Fenster für Prozesse>Abtrennen, wenn das Debuggen beendet wird Wenn diese Option ausgewählt ist, wird das Debuggen>Debugging beenden vom ausgewählten Prozess getrennt.
Wenn diese Option nicht aktiviert ist, beendet debug>Stop Debugging den ausgewählten Prozess.