Felsöka din app med GitHub Copilot i Visual Studio

I den här artikeln får du lära dig hur du felsöker mer effektivt med hjälp av GitHub Copilot. Copilot kan tillhandahålla kodkorrigeringar tillsammans med djupgående analys och förklaringar av hur kod fungerar. Det hjälper till med föreslagna korrigeringar av buggar och förklarar saker som undantag. Copilot förstår anropsstackar, ramar, variabelnamn och värden. Därför kan du interagera med den felsökningsmedvetna AI:n för att ställa detaljerade frågor som rör din kod och felsöka problem i allmänhet.

Dessutom ger Copilot mer exakt hjälp för vissa målscenarier, till exempel undantag och alla de som beskrivs i AI-förbättrade scenarier för felsökning. I de flesta av dessa scenarier letar du efter knappen Ask CopilotSkärmbild av knappen Ask Copilot. eller knappen Analysera med Copilot. I dessa scenarier känner Copilot redan till kontexten för dina frågor.

Mer information om GitHub Copilot-kompletteringar i Visual Studio finns i Om GitHub Copilot-kompletteringar i Visual Studio.

Förutsättningar

För att komma igång behöver du:

AI-förbättrade scenarier

Copilot förstår anropsstackar, ramar, variabelnamn och värden. Därför kan du interagera med den felsökningsmedvetna AI:n för att ställa detaljerade frågor som rör din kod och felsöka problem i allmänhet.

Dessutom ger Copilot mer exakt hjälp för vissa målscenarier, till exempel de som beskrivs i följande tabell.

Funktion eller scenario Länk
Felsökningsagent Se Agentisk felhantering med Debugger Agent i den här artikeln. Agentiskt arbetsflöde från slutpunkt till slutpunkt som återskapar buggar, instrumenterar din app och validerar korrigeringar med live-körningsdata.
Analys av anropsstack Se Analysera anropsstacken med Copilot. Få analys med ett klick av vad din tråd gör, inklusive asynkrona flödesförklaringar.
Undantag Se Felsöka ett undantag med Copilot i den här artikeln. Hjälp med undantag inkluderar hjälp med att upptäcka dödlåsproblem.
Variabler Se Få AI-hjälp.
LINQ-frågeanalys Hovra över LINQ-frågor vid felsökning i kodredigeraren för att se returvärdet. Välj knappen Analyze med Copilot för AI-hjälp. Se Visa returvärden för LINQ-frågor.
Tips om data Se Få AI-hjälp med datatips.
Villkorliga brytpunkter och spårningspunkter Se Få förslag med villkorsstyrda brytpunkter och spårningspunkter i den här artikeln.
Snabbåtgärder (glödlampa) Se Få AI-hjälp med Snabbåtgärder.
IEnumerable tabellvisualiserare Se Få AI-hjälp.
Identifiera automatiskt och formatera i Textvisualiserare Se Identifiera automatiskt och formatera. Copilot identifierar automatiskt kodade eller komprimerade strängar och avkodar dem med ett enda klick.
Returvärden i rad Se Visa returvärden för metodanrop.
Infogade värden Se Visa inbäddade värden.
Flertrådad felsökning Se Få AI-hjälp med trådvyn.
Enhetstestning Se Få AI-hjälp för att felsöka tester
Inspektera undantag med repositorkontext Visa Få AI-hjälp med arkivkontext
Felsöka brytpunkter Se Få AI-hjälp.
Funktion eller scenario Länk
Analys av anropsstack Se Analysera anropsstacken med Copilot. Få analys med ett klick av vad din tråd gör, inklusive asynkrona flödesförklaringar.
Undantag Se Felsöka ett undantag med Copilot i den här artikeln. Hjälp med undantag inkluderar hjälp med att upptäcka dödlåsproblem.
Variabler Se Få AI-hjälp.
LINQ-frågeanalys Hovra över LINQ-frågor vid felsökning i kodredigeraren för att se returvärdet. Välj knappen Analyze med Copilot för AI-hjälp. Se Visa returvärden för LINQ-frågor.
Tips om data Se Få AI-hjälp med datatips.
Villkorliga brytpunkter och spårningspunkter Se Få förslag med villkorsstyrda brytpunkter och spårningspunkter i den här artikeln.
Snabbåtgärder (glödlampa) Se Få AI-hjälp med Snabbåtgärder.
IEnumerable tabellvisualiserare Se Få AI-hjälp.
Returvärden i rad Se Visa returvärden för metodanrop.
Infogade värden Se Visa inbäddade värden.
Flertrådad felsökning Se Få AI-hjälp med trådvyn.
Enhetstestning Se Få AI-hjälp för att felsöka tester
Inspektera undantag med repositorkontext Visa Få AI-hjälp med arkivkontext
Felsöka brytpunkter Se Få AI-hjälp.

I de flesta av dessa scenarier får du riktad hjälp med hjälp av knappen Ask CopilotSkärmbild av Ask Copilot. eller Analyze med knappen Copilot. Copilot känner redan till kontexten för dina frågor. Den känner till exempel till den aktuella anropsstacken, kodraden som du frågar om och namnet på undantaget (om det inträffade), så du behöver inte ange kontext själv i chatten. Copilot innehåller också förslag på användning av villkorsstyrda brytpunkter och spårningspunkter.

Felsöka med hjälp av Copilot

Följande enkla exempel visar hur du får AI-hjälp med hjälp av den infogade chattvyn.

Obs

Du kan också få hjälp med det separata chattfönstret genom att välja View > GitHub Copilot Chat. Mer information finns i Vad är GitHub Copilot Chat-tillägget för Visual Studio?.

Starta en felsökningssession

  1. I Visual Studio skapar du en ny C#-konsolapp.

    I startfönstret väljer du Skapa ett nytt projekt. Skriv console i sökrutan, välj C# som språk och välj sedan Konsolapp för .NET. Välj Nästa. Skriv ett projektnamn som ConsoleApp_Copilot och välj Nästa.

    Välj antingen det rekommenderade målramverket eller .NET 10 och välj sedan Skapa.

    Om du inte ser projektmallen Console App för .NET går du till Tools>Get Tools and Features, som öppnar Visual Studio Installer. Välj arbetsbelastningen .NET desktop development och välj sedan Modify.

    Visual Studio skapar konsolprojektet, som visas i Solution Explorer i det högra fönstret.

  2. Ersätt koden i Program.cs med följande kod:

    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. Högerklicka på följande instruktion och välj Brytpunkt>Infoga brytpunkt.

    int value = Int32.Parse(args[0]);
    
  4. Tryck på F5 eller välj Starta felsökning på menyn Felsökning.

    Appen pausar vid brytpunkten. Fönstret Autos visar att args-variabeln har värdet string[0].

    Skärmbild av fönstret Autos.

  1. Högerklicka i koden och välj Chatt för att öppna den infogade chattvyn.
  1. Högerklicka i koden och välj Ask Copilot för att öppna den infogade chattvyn.

Tips

Du kan också högerklicka på en variabel i fönstret Autos eller Locals eller i ett datatips och välja Ask Copilot. Detta ger Copilot med variabelnamnet och kontexten, så du behöver inte ange kontext själv i chatten.

  1. Skriv följande fråga i den infogade chattvyn:

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

Skärmbild av inbäddad Copilot Chat.

När du trycker på Enter ger Copilot ett svar baserat på dess förståelse av koden. (Du kan få ett annat svar än vad som visas här.)

Skärmbild av fråga som besvaras av Copilot.

Om Copilot har en föreslagen korrigering för koden visas den. Annars kan du be Copilot om ett kodförslag.

Tips

I infogad chatt använder du symbolen "#" och väljer i listrutan för att lämna ut specifik information till Copilot medan du refererar till den i din fråga. Om du till exempel väljer en del av koden och sedan skriver #, kan du välja det valet i listrutan #. Du kan också använda symbolen "#" för att referera till IDE-funktioner som visas i listrutan, till exempel fönstret Lokal.

  1. I det här exemplet bläddrar du till slutet av det Copilot svaret och väljer uppföljningsfrågan i slutet av det infogade chattfönstret, "Hur kan jag hantera ärendet när inga argument skickas till programmet?"

    Skärmbild av Copilot-uppföljningsfråga.

    Copilot visar en föreslagen korrigering av koden.

    Skärmbild av korrigering som föreslås av Copilot.

    Om du vill tillämpa kodkorrigeringen väljer du Tabb.

  2. Välj Alt+Delete så att vi kan fortsätta att lära oss andra funktioner i Copilot i nästa avsnitt.

Skärmbild av inbäddad Copilot Chat.

När du trycker på Enter ger Copilot ett svar baserat på dess förståelse av koden. (Du kan få ett annat svar än vad som visas här.)

Skärmbild av en fråga besvarad av Copilot.

Om Copilot har en föreslagen korrigering för koden visas den. Annars kan du be Copilot om ett kodförslag.

Tips

I infogad chatt använder du symbolen "#" och väljer i listrutan för att lämna ut specifik information till Copilot medan du refererar till den i din fråga. Om du till exempel väljer en del av koden och sedan skriver #, kan du välja det valet i listrutan #. Du kan också använda symbolen "#" för att referera till IDE-funktioner som visas i listrutan, till exempel fönstret Lokal.

  1. I det här exemplet bläddrar du till slutet av det Copilot svaret och väljer uppföljningsfrågan i slutet av det infogade chattfönstret, "Hur kan jag hantera ärendet när inga argument skickas till programmet?"

    Skärmbild av Copilot-uppföljningsfråga.

    Copilot visar en föreslagen korrigering av koden.

    Skärmbild av Copilots föreslagna korrigering.

    Om du vill använda kodkorrigeringen väljer du Acceptera.

  2. Välj Cancel så att vi kan fortsätta att lära oss andra funktioner i Copilot i nästa avsnitt.

Felsöka ett undantag med Copilot

Följande enkla exempel visar hur du får AI-hjälp när du stöter på ett undantag och hur du snabbt uppdaterar koden baserat på AI-föreslagna korrigeringar.

Starta en felsökningssession

  • När du har pausat felsökningsprogrammet med samma exempelapplikation trycker du på F11 eller Felsöka>Gå in i för att köra den aktuella instruktionen.

    En IndexOutOfRangeException inträffar och appen pausar och visar undantaget.

    Om du vill få AI-hjälp för undantaget fortsätter du till nästa avsnitt.

Be om AI-hjälp

  1. När programmet har pausats på undantaget väljer du knappen Analysera med Copilot.

    Skärmbild av knappen Ask Copilot i ett undantag.

    Om det inte redan är öppet visas fönstret Copilot Chat och ger en utvärdering av felet och varför det inträffade. I det här exemplet identifierar Copilot en föreslagen kodkorrigering, en knapp för att kopiera kod och en Förhandsversion för kodkorrigeringen.

    Om du har frågor om undantaget kan du ställa dem i textrutan Ask Copilot.

    Skärmbild av förhandsgranskningsknappen i Copilot Chat window.

  2. I chattfönstret Copilot berättar du för Copilot att du vill att det ska förhindra felet.

  3. När Copilot föreslår en korrigering i chattfönstret väljer du Apply.

  4. Granska den föreslagna korrigeringen och välj Tabb för att tillämpa kodförslaget.

    Skärmbild av kodförhandsgranskning i Visual Studio.

  5. Starta om felsökningsprogrammet.

    Den här gången inträffar inget undantag. Det har åtgärdats!

  1. När programmet har pausats på undantaget väljer du knappen Ask Copilot.

    Skärmbild av knappen Ask Copilot i ett undantag.

    Om det inte redan är öppet visas fönstret Copilot Chat och ger en utvärdering av felet och varför det inträffade. I det här exemplet identifierar Copilot en föreslagen kodkorrigering, en knapp för att kopiera kod och en Förhandsversion för kodkorrigeringen.

    Om du har frågor om undantaget kan du ställa dem i textrutan Ask Copilot.

  2. Välj knappen , förhandsgranska.

    Skärmbild av förhandsgranskningsknappen i Copilot Chat window.

    Visual Studio visar en förhandsgranskning av kod med den föreslagna korrigeringen.

  3. Granska den föreslagna korrigeringen och välj Acceptera för att tillämpa kodförslaget.

    Skärmbild av kodförhandsgranskning i Visual Studio.

  4. Starta om felsökningsprogrammet.

    Den här gången inträffar inget undantag. Det har åtgärdats!

Agent-baserad buggupplösning med Felsökningsagenten

Felsökningsagenten tillhandahåller ett agentbaserat, heltäckande arbetsflöde som validerar buggar mot verkligt körningsbeteende i stället för att förlita sig på statisk analys. Upplevelsen vägleder dig genom en fullständig agentisk loop: förstå och återskapa problemet, instrumentera programmet, isolera rotorsaken och validera korrigeringen via livekörning.

Du kan börja från ett problem i GitHub eller Azure DevOps eller beskriva felet på naturligt språk. Felsökningsagenten mappar problemet till din lokala källkod och vägleder dig genom lösning. Du kan interagera med agenten under felsökningsprocessen för att ge mer indata, diskutera din teori eller förfina korrigeringen i realtid.

Så här använder du felsökningsagenten:

  1. Öppna fönstret Copilot Chat (View > GitHub Copilot Chat).
  2. Välj Felsökare i lägesväljaren i det nedre vänstra hörnet i chattfönstret.
  3. Ange en GitHub eller Azure DevOps problemlänk eller beskriv felet på naturligt språk.

Screenshot som visar agentväljaren med anpassade agenter i Visual Studio.

Felsökningsagenten arbetar med följande steg:

  • Kontextinmatning – Ansluter problemet eller felbeskrivningen till din lokala källkod.
  • Autonom reproducerare – Analyserar buggen och skapar, om reproduktionssteg saknas, ett minimalt scenario för att utlösa felet.
  • Hypotes och instrumentation – Genererar felhypoteser och instrumenterar din app med spårningspunkter och villkorliga brytpunkter för att samla in körningstillstånd.
  • Körningsvalidering – Genomför felsökningssessionen och analyserar telemetri i realtid för att finna ursprungsorsaken.
  • Riktad korrigering – Föreslår en exakt korrigering vid den exakta felpunkten i stället för bred refaktorisering.
  • Slutlig mänsklig validering – Du kör scenariot igen och bekräftar korrigeringen i livemiljön tillsammans med agenten.

När du är i agentläge i chatten kan du också växla till felsökningsagenten genom att använda @debugger i chattindatan. Mer information om felsökningsagenten och andra inbyggda agenter finns i Använd inbyggda och anpassade agenter med GitHub Copilot.

Få förslag med villkorsstyrda brytpunkter och spårningspunkter

Copilot ger dig förslag på konditionella brytpunkter och tracepoints som är specifika för din kod.

I det här exemplet visar vi AI-förslag för en villkorlig brytpunkt. För spårningspunkter fungerar AI-hjälpen på samma sätt.

  1. Ta bort den aktuella brytpunkten genom att klicka på den eller högerklicka och välja Ta bort brytpunkt.

  2. Ersätt följande kodrad:

    names.Add("Major Major Major");
    

    med detta:

    // names.Add("Major Major Major");
    foreach (var item in args)
    {
       names.Add("Name: " + item);
    }
    
  3. Till vänster om names.Add("Name: " + item)-instruktionen högerklickar du i marginalen och väljer Infoga villkorsstyrd brytpunkt.

  4. Välj uttrycksfältet och Copilot börjar arbeta med förslag.

    Skärmbild av Copilot som arbetar med förslag på villkorlig brytpunkt.

  1. När förslagen visas väljer du en, till exempel item == "Test". Redigera förslaget så att namnet blir Fred.

    Skärmbild av ett Copilot-förslag för en villkorlig brytpunkt.

  1. När förslagen visas väljer du en sådan som item == "John". Redigera förslaget så att namnet blir Fred.

    Skärmbild av Copilot förslag på villkorsstyrd brytpunkt.

  1. Testa villkorsuttrycket:

    1. Högerklicka på projektet ConsoleApp_Copilot i Solution Explorer och välj Egenskaper.

    2. Välj Felsökning>Allmänt>Öppna användargränssnittet för startprofiler för felsökning.

    3. I fältet kommandoradsargument anger du 5 Fred Joepå tre separata rader.

      Skärmbild av hur du anger kommandoradsargument för projektet.

    4. Starta om felsökningsprogrammet.

    När felsökningsprogrammet pausar vid brytpunkten kontrollerar du värdet för item och kontrollerar att det aktuella värdet är Fred.