Ladění aplikace pomocí GitHub Copilot v Visual Studio

V tomto článku se dozvíte, jak efektivněji ladit pomocí GitHub Copilotu. Copilot může poskytovat opravy kódu spolu s hloubkovou analýzou a vysvětlením fungování kódu. Pomáhá s navrhovanými opravami chyb a vysvětluje věci, jako jsou výjimky. Copilot rozumí zásobníkům volání, rámcům, názvům proměnných a hodnotám. V důsledku toho můžete komunikovat s AI, který má přehled o ladicím programu, a klást podrobné otázky týkající se vašeho kódu a obecně odstraňování chyb.

Kromě toho Copilot poskytuje přesnější nápovědu pro některé cílové scénáře, jako jsou výjimky, a všechny scénáře popsané v AI pro ladění. Ve většině těchto scénářů vyhledejte Ask CopilotScreenshot tlačítka Ask Copilot. nebo Analyze pomocí tlačítka Copilot. V těchto scénářích Copilot už zná kontext vašich otázek.

Další informace o doplňování GitHub Copilot v Visual Studio najdete v tématu Okončování GitHub Copilot v Visual Studio.

Požadavky

Abyste mohli začít, potřebujete:

Scénáře vylepšené AI

Copilot rozumí zásobníkům volání, rámcům, názvům proměnných a hodnotám. V důsledku toho můžete komunikovat s AI, který má přehled o ladicím programu, a klást podrobné otázky týkající se vašeho kódu a obecně odstraňování chyb.

Kromě toho Copilot poskytuje přesnější nápovědu pro některé cílové scénáře, například ty popsané v následující tabulce.

Funkce nebo scénář Odkaz
Agent ladicího programu Podívejte se na řešení chyb pomocí ladicího agenta v tomto článku. Komplexní agentní pracovní postup, který reprodukuje chyby, instrumentuje vaši aplikaci a ověřuje opravy pomocí živých dat za běhu.
Analýza zásobníku volání Podívejte se na analyzování zásobníku volání pomocí Copilotu. Získejte analýzu toho, co vaše vlákno dělá jedním kliknutím, včetně vysvětlení asynchronního toku.
Výjimky Viz Debug výjimky s Copilot v tomto článku. Pomoc s výjimkami zahrnuje pomoc při chybách detekce zablokování.
Proměnné Další informace najdete v tématu Získání pomoci s AI.
Analýza dotazů LINQ Při ladění v editoru kódu najeďte myší na dotazy LINQ, abyste viděli vrácenou hodnotu. Pokud potřebujete pomoc s AI, vyberte tlačítko Analyze s Copilot. Viz Zobrazení návratových hodnot dotazů LINQ.
Datové tipy Podívejte se na a získejte pomoc umělé inteligence s tipy na data.
Podmíněné zarážky a tracepointy Podívejte se na Získejte návrhy s podmíněnými zarážkami a trasovacími body v tomto článku.
Rychlé akce (žárovka) Podívejte se na Získejte pomoc s AI pomocí rychlých akcí.
Tabulkový vizualizér IEnumerable Další informace najdete v tématu Získání pomoci s AI.
Automatické rozpoznání a formátování ve Vizualizéru textu Viz Automatické rozpoznání a formátování. Copilot automaticky identifikuje kódované nebo komprimované řetězce a dekóduje je jediným kliknutím.
Vložené návratové hodnoty Viz Zobrazení návratových hodnot volání metody.
Vložené hodnoty Podívejte se na Zobrazení vložených hodnot.
Ladění s více vlákny Viz Získání pomoci s AI se zobrazením Vláken.
Testování jednotek Informace o získání pomoci s AI při ladění testů
Zkoumání výjimek v kontextu repozitáře Viz Pomoc s kontextem úložiště pomocí AI
Řešení potíží s body přerušení Další informace najdete v tématu Získání pomoci s AI.
Funkce nebo scénář Odkaz
Analýza zásobníku volání Podívejte se na analyzování zásobníku volání pomocí Copilotu. Získejte analýzu toho, co vaše vlákno dělá jedním kliknutím, včetně vysvětlení asynchronního toku.
Výjimky Viz Debug výjimky s Copilot v tomto článku. Pomoc s výjimkami zahrnuje pomoc při chybách detekce zablokování.
Proměnné Další informace najdete v tématu Získání pomoci s AI.
Analýza dotazů LINQ Při ladění v editoru kódu najeďte myší na dotazy LINQ, abyste viděli vrácenou hodnotu. Pokud potřebujete pomoc s AI, vyberte tlačítko Analyze s Copilot. Viz Zobrazení návratových hodnot dotazů LINQ.
Datové tipy Podívejte se na a získejte pomoc umělé inteligence s tipy na data.
Podmíněné zarážky a tracepointy Podívejte se na Získejte návrhy s podmíněnými zarážkami a trasovacími body v tomto článku.
Rychlé akce (žárovka) Podívejte se na Získejte pomoc s AI pomocí rychlých akcí.
Tabulkový vizualizér IEnumerable Další informace najdete v tématu Získání pomoci s AI.
Vložené návratové hodnoty Viz Zobrazení návratových hodnot volání metody.
Vložené hodnoty Podívejte se na Zobrazení vložených hodnot.
Ladění s více vlákny Viz Získání pomoci s AI se zobrazením Vláken.
Testování jednotek Informace o získání pomoci s AI při ladění testů
Zkoumání výjimek v kontextu repozitáře Viz Pomoc s kontextem úložiště pomocí AI
Řešení potíží s body přerušení Další informace najdete v tématu Získání pomoci s AI.

Ve většině těchto scénářů získáte cílenou pomoc pomocí tlačítka Ask CopilotScreenshot tlačítka Ask Copilot. nebo Analyze pomocí tlačítka Copilot. Copilot už zná kontext vašich otázek. Zná například aktuální zásobník volání, řádek kódu, na který se ptáte, a název výjimky (pokud došlo k výjimce), takže nemusíte v chatu zadávat kontext sami. Copilot také nabízí návrhy na použití podmíněných přerušení a trasovacích bodů.

Ladit pomocí Copilot

Následující jednoduchý příklad ukazuje, jak získat asistenci AI pomocí vloženého zobrazení chatu.

Poznámka

Nápovědu můžete získat také v samostatném okně chatu tak, že vyberete View > GitHub Copilot Chat. Další informace najdete v tématu Co je rozšíření Copilot Chat GitHubu pro Visual Studio?.

Spuštění ladicí relace

  1. V Visual Studio vytvořte novou konzolovou aplikaci jazyka C#.

    V úvodním okně zvolte Vytvořit nový projekt. Do vyhledávacího pole zadejte konsole, jako jazyk vyberte C# a jako jazyk zvolte Konsole App pro .NET. Zvolte Další. Zadejte název projektu, například ConsoleApp_Copilot, a vyberte Další.

    Zvolte doporučenou cílovou architekturu nebo .NET 10 a pak zvolte Create.

    Pokud nevidíte šablonu projektu Konsole App pro .NET, přejděte na Tools>Get Tools and Features, která otevře instalační program Visual Studio. Zvolte .NET desktopový vývoj a pak zvolte Upravit.

    Visual Studio vytvoří projekt konzoly, který se zobrazí v Solution Explorer v pravém podokně.

  2. Nahraďte kód v Program.cs následujícím kódem:

    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. Klikněte pravým tlačítkem myši na následující příkaz a zvolte Zarážku>Vložit zarážku.

    int value = Int32.Parse(args[0]);
    
  4. Stiskněte F5 nebo v nabídce Ladění vyberte Spustit ladění.

    Aplikace se pozastaví na bodu přerušení. V automatickém okně je vidět, že proměnná args má hodnotu string[0].

    snímek obrazovky okna Automatů

  1. Klikněte pravým tlačítkem do kódu a zvolte Chat a otevřete vložené zobrazení chatu.
  1. Klikněte pravým tlačítkem myši na kód a zvolte Ask Copilot a otevřete vložené zobrazení chatu.

Rada

Případně můžete kliknout pravým tlačítkem myši na proměnnou v okně Automatické hodnoty nebo Místní hodnoty nebo v datovém tipu a zvolit Ask Copilot. To poskytuje název a kontext proměnné pro Copilot, takže nepotřebujete sami zadávat kontext v chatu.

  1. Do integrovaného zobrazení chatu zadejte následující otázku:

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

Snímek obrazovky v řádku Copilot Chatu.

Když stisknete Enter, Copilot poskytne odpověď na základě jeho porozumění kódu. (Může se zobrazit jiná odpověď než zobrazená tady.)

Snímek obrazovky s otázkou zodpovězenou Copilotem.

Pokud má Copilot návrh opravy vašeho kódu, zobrazí se vám. Pokud ne, můžete požádat Copilot o návrh kódu.

Rada

Ve vloženém chatu použijte symbol # a v rozevíracím seznamu vyberte konkrétní informace, které předáte Copilotovi, když na ni odkazujete ve své otázce. Pokud například vyberete část kódu a potom zadáte #, můžete tento výběr vybrat z rozevíracího seznamu #. Pomocí symbolu #můžete také odkazovat na funkce integrovaného vývojového prostředí (IDE), které se zobrazují v rozevíracím seznamu, například v okně Místní hodnoty.

  1. V tomto příkladu se posuňte na konec Copilot odpovědi a vyberte na konci vloženého okna Chatu následující otázku: "Jak můžu zpracovat případ, když do programu nejsou předány žádné argumenty?"

    Screenshot následné otázky Copilota.

    Copilot vám zobrazí navrhovanou opravu kódu.

    Screenshot opravy navrhované Copilotem.

    Pokud chcete použít opravu kódu, vyberte Tab.

  2. Vyberte Alt+Delete, abychom mohli pokračovat ve studiu dalších funkcí Copilot v další části.

Snímek obrazovky v řádku Copilot Chatu.

Když stisknete Enter, Copilot poskytne odpověď na základě jeho porozumění kódu. (Může se zobrazit jiná odpověď než zobrazená tady.)

Snímek obrazovky s odpovědí od Copilot.

Pokud má Copilot návrh opravy vašeho kódu, zobrazí se vám. Pokud ne, můžete požádat Copilot o návrh kódu.

Rada

Ve vloženém chatu použijte symbol # a v rozevíracím seznamu vyberte konkrétní informace, které předáte Copilotovi, když na ni odkazujete ve své otázce. Pokud například vyberete část kódu a potom zadáte #, můžete tento výběr vybrat z rozevíracího seznamu #. Pomocí symbolu #můžete také odkazovat na funkce integrovaného vývojového prostředí (IDE), které se zobrazují v rozevíracím seznamu, například v okně Místní hodnoty.

  1. V tomto příkladu se posuňte na konec Copilot odpovědi a vyberte na konci vloženého okna Chatu následující otázku: "Jak můžu zpracovat případ, když do programu nejsou předány žádné argumenty?"

    Screenshot následné otázky Copilota.

    Copilot vám zobrazí navrhovanou opravu kódu.

    Screenshot návrhu opravy Copilot.

    Pokud chcete použít opravu kódu, zvolte Přijmout.

  2. Zvolte Cancel, abychom mohli pokračovat ve studiu dalších funkcí Copilot v další části.

Ladění výjimky pomocí Copilot

Následující jednoduchý příklad ukazuje, jak získat pomoc s AI, když narazíte na výjimku a jak rychle aktualizovat kód na základě navrhovaných oprav AI.

Spuštění ladicí relace

  • Když je ladicí program pozastaven ve stejné ukázkové aplikaci, stiskněte F11 nebo Ladit>Vstoupit, abyste spustili aktuální příkaz.

    Dojde k IndexOutOfRangeException a aplikace se pozastaví a zobrazí se výjimka.

    Pokud chcete získat pomoc od AI s výjimkou, pokračujte do další části.

Požádat o pomoc s AI

  1. Při pozastavení aplikace na výjimce vyberte tlačítko Analyze with Copilot.

    Snímek obrazovky tlačítka

    Pokud ještě není otevřený, zobrazí se okno Copilot Chat a zobrazí se posouzení chyby a důvod, proč k ní došlo. V tomto příkladu Copilot identifikuje navrhovaná oprava kódu, tlačítko pro kopírování kódu a tlačítko Preview pro opravu kódu.

    Pokud máte dotazy k výjimce, položte je do textového pole Ask Copilot.

    Snímek obrazovky tlačítka Náhled v okně Copilot Chat.

  2. V okně chatu Copilot řekněte Copilot, že chcete, aby se zabránilo chybě.

  3. Když Copilot navrhne opravu v okně chatu, vyberte Apply.

  4. Prostudujte navrhovanou opravu a stisknutím klávesy Tab aplikujte návrh kódu.

    Screenshot náhledu kódu v Visual Studio.

  5. Restartujte debugger.

    Tentokrát nedojde k žádné výjimce. Bylo opraveno!

  1. Když je aplikace na výjimce pozastavená, vyberte tlačítko Ask Copilot.

    Snímek obrazovky tlačítka

    Pokud ještě není otevřený, zobrazí se okno Copilot Chat a zobrazí se posouzení chyby a důvod, proč k ní došlo. V tomto příkladu Copilot identifikuje navrhovaná oprava kódu, tlačítko pro kopírování kódu a tlačítko Preview pro opravu kódu.

    Pokud máte dotazy k výjimce, položte je do textového pole Ask Copilot.

  2. Vyberte tlačítko Náhled.

    Snímek obrazovky tlačítka Náhled v okně Copilot Chat.

    Visual Studio zobrazuje náhled kódu s navrhovanou opravou.

  3. Projděte si navrhované opravy a vyberte Přijmout pro použití návrhu kódu.

    Screenshot náhledu kódu v Visual Studio.

  4. Restartujte debugger.

    Tentokrát nedojde k žádné výjimce. Bylo opraveno!

Řešení chyb pomocí ladicího agenta

Agent ladicího programu poskytuje komplexní pracovní postup agenta, který ověřuje chyby proti skutečnému chování za běhu místo toho, aby se spoléhal na statickou analýzu. Prostředí vás provede kompletní smyčkou agentů: pochopení a reprodukci problému, instrumentace aplikace, izolace původní příčiny a ověření opravy prostřednictvím živého spuštění.

Můžete začít od problému v GitHub nebo Azure DevOps nebo popsat chybu v přirozeném jazyce. Agent ladicího programu namapuje problém na místní zdrojový kód a provede vás procesem řešení. Během procesu ladění můžete s agentem komunikovat, abyste mohli poskytnout více informací, prodiskutovat svou teorii nebo upřesnit opravu v reálném čase.

Jak používat agenta ladicího programu:

  1. Otevřete okno Copilot Chat (View > GitHub Copilot Chat).
  2. V rozevíracím seznamu režimu v levém dolním rohu okna chatu vyberte Debugger.
  3. Zadejte odkaz na GitHub nebo Azure DevOps problém nebo popište chybu v přirozeném jazyce.

Screenshot zobrazující výběr agenta s vlastními agenty v Visual Studio.

Agent ladicího programu funguje pomocí následujících kroků:

  • Injektáž kontextu – Připojí problém nebo popis chyby k místnímu zdrojovému kódu.
  • Autonomní reprodukční nástroj – analyzuje chybu a pokud chybí kroky pro reprodukci, vytvoří minimální scénář pro aktivaci selhání.
  • Hypotézy a instrumentace – Generuje hypotézy o selhání a instrumentuje vaši aplikaci pomocí trasovacích bodů a podmíněných zarážek pro zachycení běhového stavu.
  • Ověření za chodu – spustí ladicí relaci a analyzuje živou telemetrii za účelem izolace původní příčiny.
  • Cílová oprava – navrhuje přesnou opravu v přesném bodě selhání místo rozsáhlého refaktoringu.
  • Konečné ověření člověka – znovu spustíte scénář a potvrdíte opravu v živém prostředí společně s agentem.

Pokud jste v režimu agenta v chatu, můžete také přepnout na agenta ladicího programu pomocí @debugger ve vstupu chatu. Další informace o agentu ladicího programu a dalších integrovaných agentech najdete v tématu Použít integrované a vlastní agenty s GitHub Copilot.

Získejte návrhy pomocí podmíněných zarážek a trasovacích bodů

Copilot nabízí návrhy na podmíněné zarážky a trasovací body specifické pro váš kód.

V tomto příkladu zobrazíme návrhy umělé inteligence pro podmíněný bod přerušení. U trasovacích bodů funguje pomoc s AI stejným způsobem.

  1. Odeberte aktuální zarážku tak, že na ni kliknete nebo kliknete pravým tlačítkem myši a zvolíte Odstranit zarážku.

  2. Nahraďte následující řádek kódu:

    names.Add("Major Major Major");
    

    s tímto:

    // names.Add("Major Major Major");
    foreach (var item in args)
    {
       names.Add("Name: " + item);
    }
    
  3. Nalevo od příkazu names.Add("Name: " + item) klikněte pravým tlačítkem v okraji a zvolte Vložit podmíněnou zarážku.

  4. Vyberte pole výrazu a Copilot začne pracovat na návrzích.

    Screenshot práce Copilot s návrhy podmíněných bodů přerušení.

  1. Jakmile se návrhy zobrazí, zvolte jeden, například item == "Test". Upravte návrh tak, aby byl název Fred.

    Screenshot návrhu Copilot na podmíněný bod přerušení.

  1. Jakmile se návrhy zobrazí, zvolte některou z nich, například item == "John". Upravte návrh tak, aby byl název Fred.

    Screenshot návrhu Copilotu pro podmíněné bod přerušení.

  1. Testování podmíněného výrazu:

    1. Klikněte pravým tlačítkem na projekt ConsoleApp_Copilot v Solution Explorer a zvolte Properties.

    2. Vyberte Ladění>Obecné>Otevřete UI pro spuštění profilů ladění.

    3. Do pole Argumenty příkazového řádku zadejte 5 Fred Joe, a to na tři samostatné řádky.

      snímek obrazovky se zadáváním argumentů příkazového řádku pro projekt

    4. Restartujte debugger.

    Až se ladicí nástroj zastaví na zarážce, zkontrolujte hodnotu item a ověřte, že aktuální hodnota je Fred.