Übung: Festlegen von Haltepunkten

Abgeschlossen

Haltepunkte werden während der Ausführung des Debugvorgangs angehalten. Auf diese Weise können Sie Variablen nachverfolgen und die Reihenfolge untersuchen, in der Ihr Code ausgeführt wird. Haltepunkte sind eine hervorragende Möglichkeit, den Debugprozess zu starten.

Haltepunkt festlegen

Weiter oben in diesem Modul haben Sie eine Übung abgeschlossen, in der Sie eine Anwendung im Debugger ausgeführt haben. Die Anwendung hat im DEBUG CONSOLE-Bereich "Begrüßungsmeldungen" angezeigt. Am Ende der Übung haben Sie bemerkt, dass der Code andrews Begrüßung unerwartet wiederholt.

In dieser Übung verwenden Sie einen Haltepunkt, um das Problem zu identifizieren.

  1. Stellen Sie sicher, dass Ihre Program.cs-Datei das folgende Codebeispiel enthält:

    /* 
    This code uses a names array and corresponding methods to display
    greeting messages
    */
    
    string[] names = new string[] { "Sophia", "Andrew", "AllGreetings" };
    
    string messageText = "";
    
    foreach (string name in names)
    {
        if (name == "Sophia")
            messageText = SophiaMessage();
        else if (name == "Andrew")
            messageText = AndrewMessage();
        else if (name == "AllGreetings")
            messageText = SophiaMessage();
            messageText = messageText + "\n\r" + AndrewMessage();
    
        Console.WriteLine(messageText + "\n\r");
    }
    
    bool pauseCode = true;
    while (pauseCode == true);
    
    static string SophiaMessage()
    {
        return "Hello, my name is Sophia.";
    }
    
    static string AndrewMessage()
    {
        return "Hi, my name is Andrew. Good to meet you.";
    }
    
  2. Verwenden Sie die Visual Studio Code-Debuggertools, um einen Haltepunkt in der ersten Codezeile in der foreach Schleife festzulegen.

    Screenshot eines Haltepunkts im Code.

    Tipp

    Eine einfache Option zum Ein-/Ausschalten eines Haltepunkts besteht darin, den Bereich links neben der Zeilennummer auszuwählen (linksklick). Haltepunkte können auch mithilfe des Run Menüs und mithilfe von Tastenkombinationen festgelegt werden.

  3. Wählen Sie im Menü "Ausführen " die Option "Debuggen starten" aus.

  4. Beachten Sie, dass die Codeausführung am Haltepunkt angehalten wird und dass die aktuelle Codezeile im Editor hervorgehoben ist.

    Screenshot mit angehaltener Codeausführung an einem Haltepunkt.

  5. Klicken Sie auf der Symbolleiste Debugsteuerelemente auf Einzelschritt.

    Sie können mit dem Mauszeiger auf die Schaltflächen auf der Symbolleiste für Debugsteuerelemente zeigen, um die Schaltflächenbeschriftungen anzuzeigen.

  6. Beachten Sie, dass die Codeausführung zur folgenden Codezeile wechselt und angehalten wird:

    messageText = SophiaMessage();
    

    Diese Codezeile weist der Zeichenfolgenvariablen messageTextden Rückgabewert der SophiaMessage Methode zu.

  7. Nehmen Sie sich einen Moment Zeit, um zu überlegen, warum Die Auswahl von Step Into dieses Ergebnis erzeugt hat.

    • Die Schaltfläche "Schritt in " wird verwendet, um zur nächsten ausführbaren Anweisung zu wechseln.
    • Da das erste Element im names Array und Sophia die if Anweisung auf den Namen Sophiaüberprüft wird, wird der Ausdruck ausgewertet true und die Codeausführung wird in den Codeblock der if Anweisung verschoben.
  8. Klicken Sie auf der Symbolleiste Debugsteuerelemente auf Einzelschritt.

  9. Beachten Sie, dass die Codeausführung zur SophiaMessage Methode wechselt und angehalten wird.

    Die Schaltfläche " Schritt in " wurde zur nächsten ausführbaren Codezeile erweitert. Die nächste ausführbare Codezeile ist nicht die nächste Zeilennummer in der Datei, es ist die nächste Anweisung im Ausführungspfad. In diesem Fall ist die nächste ausführbare Anweisung der Einstiegspunkt für die SophiaMessage Methode.

  10. Wählen Sie auf der Symbolleiste " Debugsteuerelemente " die Option "Aussteigen" aus.

  11. Beachten Sie, dass die Codeausführung an die Codezeile zurückgibt, die die SophiaMessage Methode aufgerufen und angehalten wird.

  12. Nehmen Sie sich einen Moment Zeit, um zu überlegen, warum die Auswahl von Step Out dieses Ergebnis erzeugt hat.

    In einer Methode schließt die Schaltfläche " Aussteigen" die verbleibenden Zeilen der aktuellen Methode ab und kehrt dann zum Ausführungskontext zurück, in dem die Methode aufgerufen wurde.

  13. Klicken Sie auf der Symbolleiste Debugsteuerelemente auf Einzelschritt.

  14. Beachten Sie, dass die Codeausführung zur folgenden Codezeile wechselt und angehalten wird:

    messageText = messageText + "\n\r" + AndrewMessage();
    
  15. Nehmen Sie sich einen Moment Zeit, um zu überlegen, warum die Ausführung zu dieser Codezeile erweitert wurde.

    Obwohl der Codeeinzug impliziert, dass diese Codezeile Teil des Codeblocks für die else if Anweisung ist, ist dies nicht der Fall. Die Verwendung geschweifter Klammern {} zum Definieren der Codeblöcke für diese if - else if Struktur hätte dazu beigetragen, diesen Fehler zu vermeiden. Während der Code geschrieben wird, wird Andrews Nachricht jedes Mal hinzugefügt messageText , wenn die Schleife kursiert.

Überprüfen der Codeupdates

Nachdem Sie ein Problem in Ihrem Code isoliert haben, sollten Sie den Code aktualisieren und dann überprüfen, ob das Problem behoben wurde.

  1. Wählen Sie auf der Symbolleiste "Debugsteuerelemente" die Option "Beenden" aus.

  2. Nehmen Sie sich eine Minute Zeit, um Ihre Codelogik zu beheben.

    Sie haben einige Optionen zum Beheben des identifizierten Problems in Ihrem Code. Beispiel:

    • Sie können die vorhandenen Codezeilen beibehalten und der if Struktur für jeden Codeblock geschweifte Klammern {} hinzufügen.

    • Sie können die beiden Codezeilen zusammenführen, die der endgültigen else if Anweisung folgen und eine einzelne Anweisung wie folgt bilden:

      else if (name == "AllGreetings")
          messageText = SophiaMessage() + "\n\r" + AndrewMessage();
      

    In beiden Fällen muss der aktualisierte Code den Aufruf AndrewMessage innerhalb des Codeblocks enthalten, wenn name == "AllGreetings".

  3. Klicken Sie im Menü File (Datei) auf Save (Speichern).

  4. Verwenden Sie die Debugger-UI-Tools, um den haltepunkt zu löschen, den Sie zuvor festgelegt haben.

  5. Wählen Sie im Menü "Ausführen " die Option "Debuggen starten" aus.

  6. Stellen Sie sicher, dass Ihr Code jetzt die erwarteten Ergebnisse erzeugt.

    Hello, my name is Sophia.
    
    Hi, my name is Andrew. Good to meet you.
    
    Hello, my name is Sophia.
    Hi, my name is Andrew. Good to meet you.
    
  7. Wählen Sie auf der Symbolleiste "Debugsteuerelemente" die Option "Beenden" aus.

Glückwunsch! Sie haben den Visual Studio Code-Debugger erfolgreich verwendet, um ein Logikproblem zu isolieren und zu beheben.

Zusammenfassung

Nachstehend finden Sie nochmals die wichtigsten Punkte aus dieser Lerneinheit:

  • Verwenden Sie Haltepunkte, um die Codeausführung während einer Debugsitzung anzuhalten.
  • Verwenden Sie "Step Into" über die Symbolleiste " Debugsteuerelemente ", um die nächste ausführbare Codezeile zu beobachten.
  • Verwenden Sie "Step Out" aus der Symbolleiste für Debugsteuerelemente , um durch die aktuelle Methode und zurück zur Codezeile zu gelangen, die die Methode aufgerufen hat.