Freigeben über


Lernprogramm: Debuggen einer .NET Konsolenanwendung

In diesem Lernprogramm werden die in Visual Studio verfügbaren Debugtools vorgestellt.

Von Bedeutung

Alle Tastenkombinationen basieren auf den Standardwerten von Visual Studio. Ihre Tastenkombinationen können variieren, weitere Informationen finden Sie unter Keyboard-Tastenkombinationen in Visual Studio.

In diesem Lernprogramm werden die in Visual Studio Code verfügbaren Debuggingtools zum Arbeiten mit .NET Apps vorgestellt.

In diesem Lernprogramm werden die Debugtools vorgestellt, die in GitHub Codespaces zum Arbeiten mit .NET Apps verfügbar sind.

Voraussetzungen

Dieses Lernprogramm funktioniert mit der Konsolen-App, die Sie in Erstellen einer .NET-Konsolenanwendung.

Verwenden der Debugbuildkonfiguration

Debug und Release sind die integrierten Buildkonfigurationen Visual Studio. Sie verwenden die Debugbuildkonfiguration zum Debuggen und die Releasekonfiguration für die endgültige Releaseverteilung.

In der Debugkonfiguration kompiliert ein Programm mit vollständigen symbolischen Debuginformationen und ohne Optimierung. Die Optimierung erschwert das Debuggen, da die Beziehung zwischen Quellcode und generierten Anweisungen komplexer ist. Die Releasekonfiguration eines Programms enthält keine symbolischen Debuginformationen und ist vollständig optimiert.

Standardmäßig verwendet Visual Studio die Debugbuildkonfiguration, sodass Sie sie vor dem Debuggen nicht ändern müssen.

  1. Starten Sie Visual Studio.

  2. Öffnen Sie das projekt, das Sie in Create a .NET console application erstellt haben.

    Die aktuelle Buildkonfiguration wird auf der Symbolleiste angezeigt. Die folgende Symbolleiste zeigt, dass Visual Studio so konfiguriert ist, dass die Debugversion der App kompiliert wird:

    Visual Studio Symbolleiste mit hervorgehobenem Debugging

Haltepunkt festlegen

Ein Haltepunkt unterbricht vorübergehend die Ausführung der Anwendung, bevor die Zeile mit dem Haltepunkt ausgeführt wird.

  1. Legen Sie einen Haltepunkt in der Zeile fest, in der der Name, das Datum und die Uhrzeit angezeigt werden, indem Sie in der betreffenden Zeile auf den linken Rand des Codefensters klicken. Der linke Rand befindet sich links von den Zeilennummern. Andere Möglichkeiten, einen Haltepunkt festzulegen, bestehen darin, den Cursor in der Zeile des Codes zu platzieren und dann F9 zu drücken oder DebuggenHaltepunkt umschalten in der Menüleiste zu wählen.

    Wie die folgende Abbildung zeigt, hebt Visual Studio die Zeile hervor, auf der der Haltepunkt gesetzt ist, und zeigt einen roten Punkt im linken Rand an.

    Visual Studio Programmfenster mit Haltepunktsatz

  2. Drücken Sie F5-, um das Programm im Debugmodus auszuführen. Eine weitere Möglichkeit, das Debuggen zu starten, besteht darin, im Menü DebugStart Debugging zu wählen.

  3. Geben Sie eine Zeichenfolge im Konsolenfenster ein, wenn das Programm Sie zur Eingabe eines Namens auffordert, und drücken Sie dann die EINGABETASTE.

  4. Die Programmausführung wird beendet, wenn sie den Haltepunkt erreicht, und bevor die -Methode ausgeführt wird. Im Fenster Locals werden die Werte von Variablen angezeigt, die in der derzeit ausgeführten Methode definiert sind.

    Screenshot eines Haltepunkts in Visual Studio

  1. Starten Sie Visual Studio Code.

  2. Öffnen Sie den Ordner des Projekts, das Sie in Create a .NET console application erstellt haben.

  3. Öffnen Sie die Datei Program.cs.

  4. Legen Sie einen Haltepunkt in der Zeile fest, der den Namen, das Datum und die Uhrzeit anzeigt, indem Sie auf den linken Rand des Codefensters klicken. Der linke Rand befindet sich links von den Zeilennummern. Weitere Möglichkeiten, einen Haltepunkt festzulegen, sind das Drücken von F9 oder das Auswählen von AusführenHaltepunkt umschalten aus dem Menü, während die Codezeile markiert ist.

    Visual Studio Code gibt die Linie an, auf der der Haltepunkt festgelegt wird, indem ein roter Punkt am linken Rand angezeigt wird.

    Haltepunktsatz

  1. Öffnen Sie ihren GitHub Codespace, den Sie in Create a .NET console application erstellt haben.

  2. Öffnen Sie die HelloWorld.cs Datei.

  3. Legen Sie einen Haltepunkt in der Zeile fest, der den Namen, das Datum und die Uhrzeit anzeigt, indem Sie auf den linken Rand des Codefensters klicken. Der linke Rand befindet sich links von den Zeilennummern. Sie können auch einen Haltepunkt festlegen, indem Sie F9 drücken, während die Codezeile ausgewählt ist.

    Haltepunktsatz

Debuggen starten

Die Programmausführung wird beendet, wenn sie den Haltepunkt erreicht, wie im vorherigen Abschnitt beschrieben. Im Fenster Locals werden die Werte von Variablen angezeigt, die in der derzeit ausgeführten Methode definiert sind.

Debug und Release sind die integrierten Buildkonfigurationen .NET. Sie verwenden die Debugbuildkonfiguration zum Debuggen und die Releasekonfiguration für die endgültige Releaseverteilung.

Standardmäßig verwenden Visual Studio Code Starteinstellungen die Debugbuildkonfiguration, sodass Sie sie vor dem Debuggen nicht ändern müssen.

  1. Öffnen Sie die Debugansicht, indem Sie im linken Menü das Symbol "Debuggen" auswählen.

     Öffnen der Registerkarte

  2. Wählen Sie "Ausführen" und "Debuggen" aus. Wenn Sie gefragt werden, wählen Sie C# und dann "C#: Startprojekt starten" aus. Andere Möglichkeiten zum Starten des Programms im Debugmodus sind das Drücken von F5 oder das Auswählen von "Starten des Debuggens" im Menü.

    Debuggen starten

  3. Wenn Sie aufgefordert werden, die Startkonfiguration auszuwählen, wählen Sie "C#: Aktive Datei debuggen" aus.

  4. Wählen Sie die Registerkarte " Debugkonsole " aus, um die Eingabeaufforderung "Wie lautet Ihr Name?" anzuzeigen, bevor das Programm auf eine Antwort wartet.

    Wählen Sie die Registerkarte "Debugkonsole" aus.

  5. Geben Sie eine Zeichenfolge im Fenster "Debugkonsole " als Reaktion auf die Eingabeaufforderung für einen Namen ein, und drücken Sie dann die EINGABETASTE.

    Die Programmausführung wird beendet, wenn der Haltepunkt erreicht wird, und bevor die Methode ausgeführt wird. Im Abschnitt " Locals " des Fensters "Variablen " werden die Werte von Variablen angezeigt, die in der derzeit ausgeführten Methode definiert sind.

    Haltepunkt getroffen, Lokale Variablen anzeigen

Standardmäßig verwendet GitHub Codespaces die Debugbuildkonfiguration, sodass Sie sie vor dem Debuggen nicht ändern müssen.

  1. Öffnen Sie die Debugansicht, indem Sie im linken Menü das Symbol "Debuggen" auswählen.

     Öffnen der Registerkarte

  2. Wählen Sie "Ausführen" und "Debuggen" aus. Wenn Sie gefragt werden, wählen Sie C# als Debugger aus, und wählen Sie dann "C#: Aktive Datei als Startkonfiguration debuggen" aus.

  3. Wählen Sie die Registerkarte " Debugkonsole " aus, um die Eingabeaufforderung "Wie lautet Ihr Name?" anzuzeigen, bevor das Programm auf eine Antwort wartet.

  4. Geben Sie eine Zeichenfolge im Fenster "Debugkonsole " als Reaktion auf die Eingabeaufforderung für einen Namen ein, und drücken Sie dann die EINGABETASTE.

    Die Programmausführung wird beendet, wenn der Haltepunkt erreicht wird, und bevor die Methode ausgeführt wird. Im Abschnitt " Locals " des Fensters "Variablen " werden die Werte von Variablen angezeigt, die in der derzeit ausgeführten Methode definiert sind.

    Haltepunkt getroffen, Lokale Variablen anzeigen

Verwenden Sie das Direktfenster

Das Direktfenster dient Ihrer Interaktion mit der Anwendung, die Sie debuggen. Sie können den Wert von Variablen interaktiv ändern, um zu sehen, wie sich dies auf Ihr Programm auswirkt.

  1. Wenn das fenster Immediate nicht angezeigt wird, zeigen Sie es an, indem Sie Debug>Windows>Immediate auswählen.

  2. Geben Sie im Direktfenster ein, und drücken Sie die EINGABETASTE.

  3. Geben Sie im Direktfenster ein, und drücken Sie die EINGABETASTE.

    Im Direktfenster werden der Wert der Zeichenfolgenvariablen und die Eigenschaften des -Werts angezeigt. Darüber hinaus werden die Werte der Variablen im Fenster Locals aktualisiert.

    Lokale und Direktfenster in Visual Studio

  4. Drücken Sie F5-, um die Programmausführung fortzusetzen. Eine weitere Möglichkeit, fortzufahren, besteht darin, DebuggenFortsetzen aus dem Menü auszuwählen.

    Die im Konsolenfenster angezeigten Werte entsprechen auch den Änderungen im Direktfenster.

  5. Drücken Sie eine beliebige Taste, um die Anwendung zu beenden und das Debuggen zu beenden.

Verwenden der Debugkonsole

Im Fenster " Debugkonsole " können Sie mit der Anwendung interagieren, die Sie debuggen. Sie können den Wert von Variablen ändern, um zu sehen, wie sich dies auf Ihr Programm auswirkt.

  1. Wählen Sie die Registerkarte "Debugkonsole " aus.

  2. Geben Sie bei der Eingabeaufforderung unten im "Debugkonsole"-Fenster ein und drücken Sie die EINGABETASTE.

    Ändern von Variablenwerten

  3. Geben Sie unten im Fenster Debugkonsole ein und drücken Sie die EINGABETASTE.

    Im Fenster 'Variablen' werden die neuen Werte der Variablen und angezeigt.

  4. Fahren Sie mit der Programmausführung fort, indem Sie auf der Symbolleiste die Schaltfläche " Weiter " auswählen. Eine weitere Möglichkeit, fortzufahren, besteht darin, F5 zu drücken.

    Debuggen fortsetzen

    Die im Konsolenfenster angezeigten Werte entsprechen den Änderungen, die Sie in der Debugkonsole vorgenommen haben.

    Terminal mit den eingegebenen Werten

  5. Drücken Sie die EINGABETASTE , um die Anwendung zu beenden und das Debuggen zu beenden.

Festlegen eines bedingten Breakpoints

Das Programm zeigt die Zeichenfolge an, die der Benutzer eingibt. Was geschieht, wenn der Benutzer nichts eingibt? Sie können dies mit einem nützlichen Debugfeature testen, das als Bedingter Breakpoint bezeichnet wird.

  1. Klicken Sie mit der rechten Maustaste auf den roten Punkt, der den Haltepunkt darstellt. Wählen Sie im Kontextmenü Bedingungen zum Öffnen des Dialogfelds Breakpointeinstellungen aus. Aktivieren Sie das Kontrollkästchen für Bedingungen, wenn es nicht bereits aktiviert ist.

    Editor mit dem Panel für Haltepunkteinstellungen – C#

  2. Geben Sie für den bedingten Ausdruck den folgenden Code in das Textfeld ein.

    string.IsNullOrEmpty(name)
    
    String.IsNullOrEmpty(name)
    

    Jedes Mal, wenn der Breakpoint erreicht wird, ruft der Debugger die -Methode auf, und die Ausführung wird nur in dieser Zeile unterbrochen, wenn der Methodenaufruf zurückgibt.

    Anstelle eines bedingten Ausdrucks können Sie eine Trefferanzahl angeben, wodurch die Ausführung des Programms unterbrochen wird, bevor eine Anweisung mit der angegebenen Häufigkeit ausgeführt wird. Eine weitere Option besteht darin, eine Filterbedingunganzugeben, die die Programmausführung auf der Grundlage von Attributen wie Threadbezeichner, Prozessname oder Threadname unterbricht.

  3. Wählen Sie Schließen aus, um das Dialogfeld zu schließen.

  4. Starten Sie das Programm mit dem Debuggen, indem Sie F5-drücken.

  5. Drücken Sie im Konsolenfenster die EINGABETASTE, wenn Sie zur Eingabe Ihres Namens aufgefordert werden.

  6. Da die angegebene Bedingung erfüllt wurde ( ist entweder oder ), endet die Ausführung des Programms, wenn sie den Breakpoint erreicht, und bevor die -Methode ausgeführt wird.

  7. Wählen Sie das Fenster Lokal aus, das die Werte der lokalen Variablen der aktuell ausgeführten Methode anzeigt. In diesem Fall ist die derzeit ausgeführte Methode. Beachten Sie, dass der Wert der Variablen oder ist.

  8. Bestätigen Sie, dass der Wert eine leere Zeichenfolge ist, indem Sie die folgende Anweisung im Direktfenster eingeben und dann die EINGABETASTE drücken. Das Ergebnis ist .

    ? name == String.Empty
    
    ? String.IsNullOrEmpty(name)
    

    Das Fragezeichen weist das Direktfenster an, einen Ausdruck auszuwerten.

    Das Direktfenster, das einen Wert „true“ zurückgibt, nachdem die Anweisung ausgeführt wurde – C#

  9. Drücken Sie F5-, um die Programmausführung fortzusetzen.

  10. Drücken Sie eine beliebige Taste, um das Konsolenfenster zu schließen und das Debuggen zu beenden.

  11. Löschen Sie den Breakpoint durch Klicken auf den Punkt am linken Rand des Codefensters. Andere Möglichkeiten zum Löschen eines Haltepunkts bestehen darin, F9 zu drücken oder Debuggen  Haltepunkt umschalten auszuwählen, während die Codezeile markiert ist.

  1. Klicken Sie mit der rechten Maustaste auf den roten Punkt, der den Haltepunkt darstellt (Befehl-Taste-Klicken auf macOS). Wählen Sie im Kontextmenü " Haltepunkt bearbeiten" aus, um ein Dialogfeld zu öffnen, in dem Sie einen bedingten Ausdruck eingeben können.

    Kontextmenü "Haltepunkt"

  2. Wählen Sie im Dropdown-Menü aus, geben Sie den folgenden bedingten Ausdruck ein, und drücken Sie die EINGABETASTE.

    String.IsNullOrEmpty(name)
    

    Eingeben eines bedingten Ausdrucks

    Jedes Mal, wenn der Breakpoint erreicht wird, ruft der Debugger die -Methode auf, und die Ausführung wird nur in dieser Zeile unterbrochen, wenn der Methodenaufruf zurückgibt.

    Statt eines bedingten Ausdrucks können Sie eine Trefferanzahl angeben, wodurch die Programmausführung unterbrochen wird, bevor eine Anweisung eine bestimmte Anzahl von Malen ausgeführt wird. Eine weitere Option besteht darin, eine Filterbedingunganzugeben, die die Programmausführung auf der Grundlage von Attributen wie Threadbezeichner, Prozessname oder Threadname unterbricht.

  3. Starten Sie das Programm mit dem Debuggen, indem Sie F5-drücken.

  4. Drücken Sie auf der Registerkarte " Debugkonsole " die EINGABETASTE , wenn Sie aufgefordert werden, Ihren Namen einzugeben.

    Da die angegebene Bedingung ( ist entweder oder ) erfüllt wurde, beendet die Programmausführung, wenn sie den Haltepunkt erreicht, und bevor die Methode ausgeführt wird.

    Das Fenster für Variablen zeigt, dass der Wert der -Variable , oder ist.

  5. Bestätigen Sie, dass der Wert eine leere Zeichenfolge ist, indem Sie an der Eingabeaufforderung der Debugkonsole die folgende Anweisung eingeben und die EINGABETASTE drücken. Das Ergebnis ist .

    name == String.Empty
    
  6. Wählen Sie die Schaltfläche " Weiter " auf der Symbolleiste aus, um die Programmausführung fortzusetzen.

  7. Drücken Sie die EINGABETASTE , um das Programm zu beenden und das Debuggen zu beenden.

  8. Löschen Sie den Breakpoint durch Klicken auf den Punkt am linken Rand des Codefensters. Andere Möglichkeiten zum Löschen eines Haltepunkts sind, F9 zu drücken oder im Menü RunHaltepunkt umschalten auszuwählen, wenn die Codezeile ausgewählt ist.

  9. Wenn Sie eine Warnung erhalten, dass die Haltepunktbedingung verloren geht, wählen Sie "Haltepunkt entfernen" aus.

Schrittweises Ausführen eines Programms

Visual Studio ermöglicht es Ihnen auch, eine Zeile nach Zeile durch ein Programm zu durchlaufen und die Ausführung zu überwachen. Normalerweise würden Sie einen Breakpoint festlegen und den Programmablauf in einem kleinen Teil des Programmcodes verfolgen. Da dieses Programm klein ist, können Sie das gesamte Programm durchlaufen.

  1. Legen Sie einen Haltepunkt in der Codezeile fest, der die Eingabeaufforderung "Was ist Ihr Name?" anzeigt.

  2. Wählen Sie DebugStep Into. Eine andere Möglichkeit zum Debuggen jeweils einer Anweisung besteht darin, F11 zu drücken.

    Visual Studio hebt die nächste Ausführungszeile hervor und zeigt einen Pfeil daneben an.

    Visual Studio Schritt in Methode – C#

    An diesem Punkt zeigt das fenster Locals an, dass das Array leer ist und und Standardwerte aufweisen. Darüber hinaus hat Visual Studio ein leeres Konsolenfenster geöffnet.

  3. Drücken Sie F11. Visual Studio hebt die Anweisung hervor, die die variable Zuordnung name enthält. Das Fenster Lokal zeigt, dass den Wert aufweist, und das Konsolenfenster zeigt die Zeichenfolge „What is your name?“ an.

  4. Reagieren Sie auf die Eingabeaufforderung, indem Sie eine Zeichenfolge in das Konsolenfenster eingeben und die EINGABETASTE drücken. Die Konsole reagiert nicht, und die eingegebene Zeichenfolge wird nicht im Konsolenfenster angezeigt, aber die Methode erfasst trotzdem Ihre Eingabe.

  5. Drücken Sie F11. Visual Studio hebt die Anweisung hervor, die die variable Zuordnung currentDate enthält. Das Fenster Lokale Variablen zeigt den vom Aufruf der Methode zurückgegebenen Wert an. Im Konsolenfenster wird auch die Zeichenfolge angezeigt, die Sie an der Eingabeaufforderung eingegeben haben.

  6. Drücken Sie F11. Das Fenster Lokal zeigt den Wert der Variablen nach der Zuweisung aus der -Eigenschaft an. Das Konsolenfenster ist unverändert.

  7. Drücken Sie F11. Visual Studio ruft die methode Console.WriteLine(String, Object, Object) auf. Das Konsolenfenster zeigt die formatierte Zeichenfolge an.

  8. Wählen Sie DebugStep Out. Eine andere Möglichkeit, die schrittweise Ausführung zu stoppen, besteht darin, UMSCHALTF11 zu drücken.

    Das Konsolenfenster zeigt eine Meldung an und wartet, bis Sie eine Taste drücken.

  9. Drücken Sie eine beliebige Taste, um das Konsolenfenster zu schließen und das Debuggen zu beenden.

Visual Studio Code ermöglicht es Ihnen auch, eine Zeile nach Zeile durch ein Programm zu durchlaufen und die Ausführung zu überwachen. Normalerweise würden Sie einen Breakpoint festlegen und den Programmablauf in einem kleinen Teil des Programmcodes verfolgen. Da dieses Programm klein ist, können Sie das gesamte Programm durchlaufen.

  1. Legen Sie einen Haltepunkt in der Codezeile fest, der die Eingabeaufforderung "Was ist Ihr Name?" anzeigt.

  2. Drücken Sie F5 , um mit dem Debuggen zu beginnen.

    Visual Studio Code hebt die Haltepunktlinie hervor.

    An diesem Punkt zeigt das Fenster "Variablen " an, dass das Array leer ist und Standardwerte aufweist.

  3. Wählen Sie in der Debugsymbolleiste "Schritt in" aus, oder drücken Sie F11.

    Step-Into-Schaltfläche

    Visual Studio Code hebt die nächste Zeile hervor.

  4. Visual Studio Code führt die Console.WriteLine für die Namenseingabeaufforderung aus und hebt die nächste Ausführungszeile hervor. Die nächste Zeile ist die für die . Das Fenster "Variablen " ist unverändert, und auf der Registerkarte " Terminal " wird die Eingabeaufforderung "Wie lautet Ihr Name?" angezeigt.

  5. Wählen Sie "Schritt in" aus, oder drücken Sie F11.

    Visual Studio Code hebt die name Variablenzuweisung hervor. Das Fenster Variablen zeigt, dass immer noch ist.

  6. Antworten Sie auf die Eingabeaufforderung, indem Sie auf der Registerkarte "Terminal" eine Zeichenfolge eingeben und die EINGABETASTE drücken.

    Auf der Registerkarte " Debugkonsole " wird möglicherweise nicht die Zeichenfolge angezeigt, die Sie eingeben, während Sie sie eingeben, aber die Methode erfasst Ihre Eingabe.

  7. Wählen Sie "Schritt in" aus, oder drücken Sie F11.

    Visual Studio Code hebt die currentDate Variablenzuweisung hervor. Das Fenster "Variablen" zeigt den Wert an, der vom Aufruf der Methode zurückgegeben wird. Auf der Registerkarte "Terminal " wird die Zeichenfolge angezeigt, die Sie an der Eingabeaufforderung eingegeben haben.

  8. Wählen Sie "Schritt in" aus, oder drücken Sie F11.

    Das Fenster "Variablen " zeigt den Wert der Variablen nach der Zuordnung aus der Eigenschaft an.

  9. Wählen Sie "Schritt in" aus, oder drücken Sie F11.

    Visual Studio Code ruft die methode Console.WriteLine(String, Object, Object) auf. Das Konsolenfenster zeigt die formatierte Zeichenfolge an.

  10. Wählen Sie "Schritt zurück" oder drücken Sie ShiftF11.

    Schaltfläche "Step-Out"

    Das Terminal zeigt "Drücken Sie eine beliebige Taste zum Beenden..." an.

  11. Drücken Sie eine beliebige Taste, um das Programm zu beenden.

Verwenden der Releasebuildkonfiguration

Nachdem Sie die Debugversion Ihrer Anwendung getestet haben, sollten Sie auch die Releaseversion kompilieren und testen. Die Releaseversion enthält Compileroptimierungen, die sich manchmal negativ auf das Verhalten einer Anwendung auswirken können. Compileroptimierungen, die zur Verbesserung der Leistung entwickelt wurden, können z. B. Racebedingungen in Multithreadanwendungen erstellen.

Um die Releaseversion Ihrer Konsolenanwendung zu erstellen und zu testen, ändern Sie die Buildkonfiguration auf der Symbolleiste von Debug- in Release-.

Standardeinstellung für die Visual Studio-Symbolleiste mit hervorgehobener Freigabe

Wenn Sie F5 drücken oder Projektmappen erstellen aus dem Menü Build auswählen, kompiliert Visual Studio die Release-Version der Anwendung. Sie können sie dann wie die Debugversion testen.

Um die Releaseversion Ihrer Konsolenanwendung zu erstellen und zu testen, öffnen Sie das Terminal , und führen Sie den folgenden Befehl aus:

dotnet run --configuration Release

Führen Sie zum Erstellen und Testen der Releaseversion Ihrer Konsolenanwendung den folgenden Befehl im Terminal aus:

dotnet run --configuration Release HelloWorld.cs

Nächste Schritte

In dieser Anleitung haben Sie Debugging-Tools verwendet. Im nächsten Tutorial veröffentlichen Sie eine einsatzbereite Version der App.