Debuggen Ihrer App mit GitHub Copilot in Visual Studio

In diesem Artikel erfahren Sie, wie Sie GitHub Copilot für ein effizienteres Debuggen nutzen. Copilot kann Codefehlerbehebungen sowie ausführliche Analysen und Erläuterungen zur Funktionsweise von Code liefern. Es hilft bei der vorgeschlagenen Fehlerbehebung und erklärt die Vorgänge wie z. B. Ausnahmen. Copilot versteht Aufruflisten, Frames, Variablennamen und Werte. Daher können Sie mit der debuggerfähigen KI interagieren und detaillierte Fragen zu Ihrem Code und zum Debuggen von Problemen im Allgemeinen stellen.

Darüber hinaus bietet Copilot genauere Hilfe für einige spezielle Szenarien, einschließlich der folgenden:

  • Ausnahmen
  • Variablen
  • Deadlocks
  • Automatische Erkenntnisse zur CPU-Auslastung

KI-Unterstützung erhalten Sie beim Debuggen in diesen Szenarien über die Schaltfläche Copilot fragen Screenshot der Schaltfläche Copilot fragen.. In diesen Szenarien kennt Copilot bereits den Kontext für Ihre Fragen. Es kennt beispielsweise die aktuelle Aufrufliste, die Codezeile, nach der Sie fragen, und den Namen der Ausnahme (falls eine aufgetreten ist), sodass Sie nicht selbst Kontext im Chat bereitstellen müssen. Copilot bietet auch Vorschläge für die Verwendung von bedingten Breakpoints und Ablaufverfolgungspunkten.

Weitere Informationen zu GitHub Copilot-Erweiterungen in Visual Studio finden Sie unter Informationen zu GitHub Copilot-Erweiterungen in Visual Studio.

Voraussetzungen

Zunächst benötigen Sie Folgendes:

Anfordern von KI-Unterstützung zum Debuggen der App

Das folgende einfache Beispiel zeigt, wie Sie mithilfe der Inlinechatansicht KI-Unterstützung erhalten.

Hinweis

Sie erhalten auch über das separate Chatfenster Hilfe, indem Sie GitHub Copilot Chat >anzeigen auswählen. Weitere Informationen finden Sie unter Was ist die GitHub Copilot Chat-Erweiterung für Visual Studio?.

Starten einer Debugsitzung

  1. Erstellen Sie in Visual Studio eine neue C#-Konsolen-App.

    Wählen Sie im Startfenster Neues Projekt erstellen aus. Geben Sie im Suchfeld Konsole ein, wählen Sie als Sprache C# aus, und wählen Sie dann die Vorlage Konsolen-App für .NET aus. Wählen Sie Weiter aus. Geben Sie einen Projektnamen wie ConsoleApp_Copilot ein, und wählen Sie Weiter aus.

    Wählen Sie entweder das empfohlene Zielframework oder .NET 8 aus, und wählen Sie Erstellen aus.

    Wenn die .NET-Projektvorlage Konsolen-App nicht angezeigt wird, navigieren Sie zu Tools>Tools und Features abrufen, woraufhin der Visual Studio-Installer geöffnet wird. Wählen Sie beispielsweise die Workload .NET-Desktopentwicklung aus, und klicken Sie anschließend auf Ändern.

    Visual Studio erstellt das Konsolenprojekt, das im Projektmappen-Explorer (rechter Bereich) angezeigt wird.

  2. Ersetzen Sie den Code in Program.cs durch den folgenden Code:

    using System;
    using System.Collections.Generic;
    
    public class Example
    {
        public static void Main(string[] args)
        {
            int value = Int32.Parse(args[0]);
            List<String> names = null;
            if (value > 0)
                names = new List<String>();
    
            names.Add("Major Major Major");
        }
    }
    
  3. Klicken Sie mit der rechten Maustaste auf die folgende Anweisung, und wählen Sie dann Haltepunkt>Haltepunkt einfügen aus.

    int value = Int32.Parse(args[0]);
    
  4. Drücken Sie F5, oder wählen Sie im Menü Debuggen die Option Debuggen starten aus.

    Die App hält am Haltepunkt an. Das Fenster „Auto“ zeigt, dass die Argumentvariable einen Wert aufweist string[0].

    Screenshot des Fensters Auto.

  5. Klicken Sie mit der rechten Maustaste auf den Code, und wählen Sie Copilot fragen aus, um die Inlinechatansicht zu öffnen.

    Tipp

    Alternativ können Sie im Fenster „Autos“ oder „Lokale Variablen“ oder in einem Datentipp mit der rechten Maustaste auf eine Variable klicken und Copilot fragen auswählen. Wenn Sie dies tun, erhält Copilot den Variablennamen und den Kontext, sodass Sie im Chat nicht selbst Kontext bereitstellen müssen.

  6. Geben Sie in der Inlinechatansicht die folgende Frage ein:

    Why does the args variable have a value of string[0]?
    

    Screenshot des Inline-Copilot-Chats.

    Wenn Sie die Eingabetaste drücken, gibt Copilot auf der Grundlage Ihres Codes eine Antwort. (Möglicherweise erhalten Sie eine andere Antwort als die hier dargestellte.)

    Screenshot der von Copilot beantworteten Frage.

    Wenn Copilot einen Korrekturvorschlag für Ihren Code hat, wird er angezeigt. Andernfalls können Sie Copilot nach einem Codevorschlag fragen.

    Tipp

    Verwenden Sie im Inlinechat das Symbol # und wählen Sie aus der Einblendliste aus, um bestimmte Informationen an Copilot zu übergeben, während Sie in Ihrer Frage darauf verweisen. Wenn Sie beispielsweise einen Teil von Code auswählen und dann # eingeben, können Sie diese Auswahl aus der # Einblendliste auswählen. Sie können auch das Symbol # verwenden, um auf IDE-Features zu verweisen, die in der Einblendliste angezeigt werden, z. B. das Fenster Lokal.

  7. Scrollen Sie in diesem Beispiel zum Ende der Copilot-Antwort, und wählen Sie die Folgefrage am Ende des Inlinechatfensters aus: „Wie kann ich den Fall behandeln, wenn keine Argumente an das Programm übergeben werden?“

    Screenshot der Copilot-Nachfrage.

    Copilot zeigt einen Korrekturvorschlag für Ihren Code an.

    Screenshot der von Copilot vorgeschlagenen Korrektur.

    Wenn Sie die Codekorrektur anwenden möchten, wählen Sie Annehmen aus.

  8. Wählen Sie Abbrechen aus, wenn Sie fortfahren und weitere Features von Copilot im nächsten Abschnitt kennen lernen können.

Anfordern von KI-Unterstützung für eine Ausnahme

Das folgende einfache Beispiel zeigt, wie Sie KI-Unterstützung erhalten, wenn Sie auf eine Ausnahme stoßen und wie Sie Ihren Code basierend auf von KI vorgeschlagenen Korrekturen schnell aktualisieren.

Starten einer Debugsitzung

  • Während dasselbe Codebeispiel im Debugger angehalten wurde, drücken Sie F11, oder klicken Sie auf Debuggen>Einzelschritt, um die aktuelle Anweisung auszuführen.

    Eine IndexOutOfRangeException tritt auf, und die App wird angehalten, wobei die Ausnahme angezeigt wird.

    Um KI-Unterstützung für die Ausnahme zu erhalten, fahren Sie mit dem nächsten Abschnitt fort.

Anfordern von KI-Unterstützung

  1. Wenn die Anwendung bei der Ausnahme angehalten wurde, wählen Sie die Schaltfläche Copilot fragen aus.

    Screenshot der Schaltfläche Copilot fragen in einer Ausnahme.

    Wenn es noch nicht geöffnet ist, wird das Fenster „Copilot-Chat“ angezeigt und stellt eine Bewertung des Fehlers und die Gründe für den Fehler bereit. In diesem Beispiel identifiziert Copilot eine vorgeschlagene Codekorrektur, eine Schaltfläche zum Kopieren von Code und die Schaltfläche Vorschau für die Codekorrektur.

    Wenn Sie Fragen zur Ausnahme haben, stellen Sie sie im Textfeld „Copilot fragen“.

  2. Wählen Sie die Schaltfläche Vorschau aus.

    Screenshot der Schaltfläche Vorschau im Copilot-Chatfenster.

    Visual Studio zeigt eine Codevorschau mit der vorgeschlagenen Korrektur an.

  3. Überprüfen Sie die vorgeschlagene Korrektur, und wählen Sie Annehmen aus, um den Codevorschlag anzuwenden.

    Screenshot der Code-Vorschau in Visual Studio.

  4. Starten Sie den Debugger neu.

    Diesmal tritt keine Ausnahme auf. Dieses Problem wurde behoben.

Abrufen von KI-Unterstützung bei bedingten Breakpoints und Ablaufverfolgungspunkten

Copilot bietet Ihnen Vorschläge für bedingte Breakpoints und Ablaufverfolgungspunkte, die für Ihren Code spezifisch sind.

In diesem Beispiel zeigen wir KI-Vorschläge für einen bedingten Breakpoint an. Bei Ablaufverfolgungspunkten funktioniert die KI-Unterstützung auf die gleiche Weise.

  1. Entfernen Sie den aktuellen Breakpoint, indem Sie darauf klicken oder mit der rechten Maustaste klicken und wählen Sie Haltepunkt löschen aus.

  2. Ersetzen Sie die folgende Codezeile:

    names.Add("Major Major Major");
    

    durch diesen:

    // names.Add("Major Major Major");
    foreach (var item in args)
    {
       names.Add("Name: " + item);
    }
    
  3. Klicken Sie links neben der names.Add("Name: " + item)-Anweisung mit der rechten Maustaste auf den Bundsteg, und wählen Sie Bedingten Breakpoint einfügen aus.

  4. Wählen Sie das Ausdrucksfeld aus, und Copilot beginnt mit der Bearbeitung von Vorschlägen.

    Screenshot von Copilot, der an Vorschlägen für bedingten Breakpoint arbeitet.

  5. Wenn die Vorschläge angezeigt werden, wählen Sie einen aus, z. B. item == "John". Bearbeiten Sie den Vorschlag so, dass der Name Fred lautet.

    Screenshot des Copilot-Vorschlags für einen bedingten Breakpoint.

  6. Um den bedingten Ausdruck zu testen:

    1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt ConsoleApp_Copilot und wählen Sie Eigenschaften aus.

    2. Wählen Sie Debuggen>Allgemein>Öffnen der Benutzeroberfläche von Debugstartprofilen aus.

    3. Geben Sie im Befehlszeilenargument-Feld ein 5 Fred Joe ein, und zwar in drei separaten Zeilen.

      Screenshot der Eingabe von Befehlszeilenargumenten für das Projekt.

    4. Starten Sie den Debugger neu.

    Wenn der Debugger am Breakpoint pausiert, prüfen Sie den Wert von item und stellen Sie sicher, dass der aktuelle Wert Fred ist.

Abrufen von KI-Unterstützung in der tabellarischen Visualisierung von IEnumerable

Informationen zur KI-Unterstützung für die tabellarische Visualisierung von IEnumerable finden Sie unter "Ändern des Visualisierungsausdrucks".

Anfordern von KI-Unterstützung für automatische Erkenntnisse

Zusätzlich zur interaktiven Debugging-Unterstützung bietet Copilot detaillierte Informationen in den automatischen Erkenntnissen zur CPU-Auslastung. Sie erhalten Informationen zu einer Reihe von spezifischen Leistungserkenntnissen. Stellen Sie mit Copilot Fragen zu Funktionen auf den identifizierten langsamsten Pfaden in Ihrem Code, die Ihnen helfen können, effizienteren oder kostengünstigeren Code zu erstellen.

Die Schaltfläche Copilot fragen wird auch dann angezeigt, wenn keine spezifischen Leistungserkenntnisse identifiziert werden. Wählen Sie "Copilot fragen aus, um von Copilot zu lernen und Fragen zu stellen.

Animation der Verwendung von Copilot mit CPU-Auslastung.