Grundlegendes zum .NET-Debugger in Visual Studio Code
In der vorigen Lerneinheit haben Sie erfahren, dass ein Debugger Ihnen hilft, die Ausführung Ihres Programms zu steuern und seinen Zustand zu beobachten. In diesem Abschnitt erfahren Sie, wie Sie beide Aufgaben in Visual Studio Code ausführen.
Beginnen wir mit dem Konfigurieren des Visual Studio Code-Debuggers für die Verwendung mit .NET.
Konfigurieren von Visual Studio Code für .NET-Debugging
Wenn Sie zum ersten Mal eine C#-Datei in Visual Studio Code öffnen, werden Sie aufgefordert, die empfohlenen Erweiterungen für C# zu installieren.
Visual Studio Code installiert die C# -Erweiterung und zeigt eine zusätzliche Eingabeaufforderung an, um erforderliche Ressourcen zum Erstellen und Debuggen Ihres Projekts hinzuzufügen.
Hinweis
C#-Sprachunterstützung in Visual Studio Code ist eine optionale Installation aus dem Marketplace. Visual Studio Code fordert Sie automatisch auf, diese Erweiterung zu installieren, wenn Sie eine C#-Datei öffnen, falls noch nicht geschehen. Wenn Sie Probleme beim Erstellen oder Debuggen Ihrer .NET-Anwendung in Visual Studio Code haben, sollten Sie überprüfen, ob Ihr Projekt über die erforderlichen Ressourcen für die C#-Sprachunterstützung verfügt.
Haltepunkte
Wie Sie in der vorherigen Lerneinheit erfahren haben, hilft ein Debugger dabei, die Ausführung des Programms zu analysieren und zu steuern. Wenn Sie den Visual Studio Code-Debugger starten, wird der Code sofort ausgeführt. Da Ihr Code sehr schnell ausgeführt wird, müssen Sie in der Lage sein, das Programm bei jeder beliebigen Anweisung anzuhalten. Dazu verwenden Sie Haltepunkte.
Sie können in Visual Studio Code einen Haltepunkt hinzufügen, indem Sie auf die linke Seite der Zeilennummer in der Zeile klicken, die Sie unterbrechen möchten. Sobald der Haltepunkt aktiviert ist, sollte ein roter Kreis angezeigt werden. Klicken Sie noch einmal auf den roten Kreis, um den Haltepunkt zu entfernen.
Wenn Sie mit der rechten Maustaste klicken, um einen Haltepunkt hinzuzufügen, können Sie auch " Bedingten Haltepunkt hinzufügen" auswählen. Diese spezielle Art von Haltepunkt ermöglicht es Ihnen, eine Bedingung für die Unterbrechung der Ausführung einzugeben. Dieser Breakpoint ist nur aktiv, wenn die angegebene Bedingung erfüllt ist. Sie können auch einen vorhandenen Haltepunkt ändern, indem Sie mit der rechten Maustaste darauf klicken und " Haltepunkt bearbeiten" auswählen.
Übersicht über den Visual Studio Code-Debugger
Nachdem Sie Ihre Haltepunkte eingerichtet und Ihre App gestartet haben, werden neue Informationsbereiche und Steuerelemente auf dem Bildschirm angezeigt.
- Steuerelemente zum Starten des Debuggers
- Variablenstatus
- Überwachter Variablenstatus
- Aktueller Aufrufstapel
- Haltepunkte
- Ausführungskontrollen
- Aktueller Ausführungsschritt
- Debugging-Konsole
Steuerelemente zum Starten des Debuggers
Oben auf der Randleiste finden Sie die Startsteuerelemente:
- Starten Sie das Debuggen.
- Wählen Sie die aktive Startkonfiguration aus.
- Bearbeiten Sie die
launch.jsonDatei. Erstellen Sie es, wenn Sie es benötigen. - Öffnen Sie das Debugterminal.
Anzeigen und Bearbeiten des Variablenzustands
Wenn Sie die Ursache eines Programmfehlers analysieren, beobachten Sie den Variablenstatus, um nach unerwarteten Änderungen zu suchen. Dazu können Sie den Bereich "Variablen " verwenden.
Ihre Variablen werden nach Bereich organisiert:
- Lokale Variablen: Zugriff auf den aktuellen Bereich, in der Regel die aktuelle Funktion.
- Globale Variablen: Überall in Ihrem Programm zugänglich. Systemobjekte aus der JavaScript-Laufzeit sind ebenfalls enthalten, daher sollten Sie nicht überrascht sein, wenn dort viele Dinge zu sehen sind.
- Schließvariablen: Zugriff über die aktuelle Schließung, falls vorhanden. Ein Schließen kombiniert den lokalen Bereich einer Funktion mit dem Bereich der äußeren Funktion, zu der sie gehört.
Sie können Bereiche und Variablen aufklappen, indem Sie den Pfeil auswählen. Wenn Sie Objekte entfalten, können Sie alle im Objekt definierten Eigenschaften sehen.
Es ist möglich, den Wert einer Variablen automatisch zu ändern, indem Sie auf die Variable doppelklicken.
Wenn Sie direkt im Editor-Fenster mit dem Mauszeiger auf einen Funktionsparameter oder eine Variable zeigen, können Sie den jeweiligen Wert ebenfalls sehen.
Überwachen von Variablen
Es kann mühsam sein, jedes Mal nach einem variablen Zustand zu suchen, wenn Sie ihn über eine Zeit oder unterschiedliche Funktionen nachverfolgen möchten. Hier ist das Watch-Panel praktisch.
Sie können die Schaltfläche "Plus " auswählen, um einen Variablennamen oder einen zu überwachenden Ausdruck einzugeben. Alternativ können Sie im Bereich "Variablen " mit der rechten Maustaste auf eine Variable klicken und "Zur Überwachung hinzufügen" auswählen.
Alle Ausdrücke im Überwachungsbereich werden automatisch aktualisiert, wenn der Code ausgeführt wird.
Aufrufliste
Jedes Mal, wenn das Programm eine Funktion eingibt, wird der Aufrufliste ein Eintrag hinzugefügt. Wenn Ihre Anwendung komplex wird und Sie funktionen innerhalb von Funktionen mehrmals aufgerufen haben, stellt der Aufrufstapel den Trail der Funktionsaufrufe dar.
Dies ist hilfreich, um die Ursache einer Ausnahme zu finden. Wenn Sie in Ihrem Programm einen unerwarteten Absturz haben, wird häufig etwas in der Konsole wie im folgenden Beispiel angezeigt:
Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array.
at OrderProcessor.OrderQueue.ProcessNewOrders(String[] orderIds) in C:\Users\Repos\OrderProcessor\OrderQueue.cs:line 12
at OrderProcessor.Program.Main(String[] args) in C:\Users\Repos\OrderProcessor\Program.cs:line 9
Die mit at [...] beginnenden Zeilen unterhalb der Fehlermeldung werden als Stapelüberwachung bezeichnet. In der Stapelüberwachung ist der Name und der Ursprung jeder Funktion aufgeführt, die aufgerufen wurde, bevor die Ausnahme auftrat. Es kann ein bisschen schwierig sein, zu entschlüsseln, da es auch interne Funktionen aus der .NET-Laufzeit enthält.
Hier ist das Visual Studio Code Call Stack Panel praktisch. Es filtert unerwünschte Informationen heraus, um Ihnen standardmäßig nur die relevanten Funktionen aus Ihrem eigenen Code anzuzeigen. Anschließend können Sie diese Aufrufliste entladen, um herauszufinden, wo die Ausnahme entstanden ist.
Haltepunktebereich
Im Bereich "Haltepunkte " können Sie alle Haltepunkte, die Sie in Ihrem Code platziert haben, anzeigen und umschalten. Außerdem können Sie das Halten bei abgefangenen oder nicht abgefangenen Ausnahmen aktivieren oder deaktivieren. Im Panel Haltepunkte können Sie den Programmzustand überprüfen und mithilfe der Aufrufliste die Ursache einer Ausnahme zurückverfolgen, wenn eine auftritt.
Steuern der Ausführung
Sie können den Ausführungsfluss Ihres Programms mithilfe dieser Steuerelemente steuern.
Von links nach rechts sind die Steuerelemente:
- Fortsetzen oder Anhalten der Ausführung: Wenn die Ausführung angehalten wird, wird sie fortgesetzt, bis der nächste Haltepunkt erreicht ist. Wenn das Programm ausgeführt wird, wechselt die Schaltfläche zu einer Schaltfläche zum Anhalten, die Sie verwenden können, um die Ausführung anzuhalten.
- Überspringen: Führt die nächste Code-Anweisung im aktuellen Kontext aus.
- Schritt in: Wie Step over, aber wenn die nächste Anweisung ein Funktionsaufruf ist, fahren Sie mit der ersten Codeanweisung dieser Funktion fort (identisch mit dem
stepBefehl). - Step out: Wenn Sie sich in einer Funktion befinden, führen Sie den restlichen Code dieser Funktion aus und kehren Sie zur Anweisung nach dem ursprünglichen Funktionsaufruf zurück (wie beim
outBefehl). - Neustart: Starten Sie das Programm von Anfang an neu.
- Beenden: Beenden Sie die Ausführung, und verlassen Sie den Debugger.
Verwenden der Debugkonsole
Sie können die Debugkonsole ein- oder ausblenden, indem Sie STRG+UMSCHALT+Y für Windows und Linux auswählen. Auf einem Mac drücken Sie CMD+UMSCHALT+Y. Sie können die Debugkonsole verwenden, um Die Anwendungskonsolenprotokolle zu visualisieren. Sie können ihn auch verwenden, um Ausdrücke auszuwerten oder Code im aktuellen Ausführungsinhalt auszuführen, z. B. Befehle oder Variablennamen im integrierten .NET-Debugger.
Sie können einen .NET-Ausdruck in das Eingabefeld unten in der Debugkonsole eingeben und dann die EINGABETASTE auswählen, um ihn auszuwerten. Das Ergebnis wird direkt in der Konsole angezeigt.
Mithilfe der Debugkonsole können Sie schnell einen Variablenwert überprüfen, eine Funktion mit unterschiedlichen Werten testen oder den aktuellen Zustand ändern.
Hinweis
Während die Debugkonsole für das Ausführen und Auswerten von .NET-Code sehr nützlich ist, kann es ein wenig verwirrend sein, wenn Sie versuchen, eine .NET-Konsolenanwendung auszuführen oder zu debuggen, da die Debugkonsole keine Terminaleingaben für ein ausgeführtes Programm akzeptiert.
Um die Terminaleingabe beim Debuggen zu verarbeiten, können Sie das integrierte Terminal (eines der Visual Studio Code-Fenster) oder ein externes Terminal verwenden. In diesem Lernprogramm verwenden Sie das integrierte Terminal.
Öffnen Sie .vscode/launch.json.
Ändern Sie die
console-Einstellung inintegratedTerminalvon:"console": "internalConsole",An:
"console": "integratedTerminal",Speichern Sie Ihre Änderungen.
In der nächsten Lektion erfahren Sie, wie Sie den Debugger verwenden, um den Fehler im Fibonacci-Code zu beheben, den wir zuvor gesehen haben.