Seznámení s ladicím programem pro .NET v editoru Visual Studio Code

Dokončeno

V předchozí lekci jste se dozvěděli, že ladicí program vám pomůže řídit provádění programu a sledovat jeho stav. V této části se dozvíte, jak obě tyto činnosti provádět v editoru Visual Studio Code.

Začneme tím, že se naučíme, jak ladicí program editoru Visual Studio Code nakonfigurovat pro platformu .NET.

Konfigurace editoru Visual Studio Code pro ladění programů .NET

Když v editoru Visual Studio Code poprvé otevřete nějaký soubor v jazyce C#, zobrazí se vám výzva k instalaci doporučených rozšíření pro jazyk C#.

Screenshot of Visual Studio Code prompt to install the C# extension.

Visual Studio Code nainstaluje rozšíření pro jazyk C# a zobrazí další výzvu k přidání požadovaných prostředků pro sestavení a ladění projektu.

Screenshot of Visual Studio Code prompt to add required assets to build and debug your .NET project.

Poznámka:

Podpora jazyka C# v editoru Visual Studio Code je volitelná instalace z Marketplace. Pokud jste to ještě neudělali, při otevření souboru v jazyce C# vás Visual Studio Code automaticky vyzve k instalaci tohoto rozšíření. Pokud máte problémy při sestavování nebo ladění aplikace platformy .NET v editoru Visual Studio Code, měli byste ověřit, že váš projekt obsahuje požadované prostředky pro podporu jazyka C#.

Zarážky

Jak jste se dozvěděli v předchozí lekci, pomůže vám ladicí program analyzovat a řídit provádění programu. Když spustíte ladicí program editoru Visual Studio Code, začne ihned provádět váš kód. Protože provádění kódu je velmi rychlé, musíte být schopni program pozastavit u jakéhokoli příkazu. K tomu slouží zarážky.

Zarážku v editoru Visual Studio Code můžete přidat kliknutím na levou stranu čísla řádku na řádku, který chcete přerušit. Po nastavení zarážky byste měli vidět červené kolečko. Opětovným výběrem červeného kolečka zarážku odeberete.

Screenshot of a breakpoint added in the Visual Studio Code editor window.

Pokud zarážku přidáte kliknutím pravým tlačítkem, můžete také vybrat Add Conditional Breakpoint (Přidat podmíněnou zarážku). Tento speciální typ zarážky vám umožňuje zadat podmínku pro přerušení provádění. Tato zarážka bude aktivní jen při splnění zadané podmínky. Existující zarážku můžete také upravit tak, že na ni kliknete pravým tlačítkem a vyberete Edit Breakpoint (Upravit zarážku).

Screenshot of setting a conditional breakpoint in Visual Studio Code.

Přehled ladicího programu editoru Visual Studio Code

Po nastavení zarážek a spuštění své aplikace se na obrazovce objeví nové informační panely a ovládací prvky.

Screenshot of Visual Studio Code debugger overview.

  1. Ovládací prvky pro spuštění ladicího programu
  2. Stav proměnných
  3. Stav sledovaných proměnných
  4. Aktuální zásobník volání
  5. Zarážky
  6. Ovládací prvky provádění
  7. Aktuální krok provádění
  8. Konzola ladění

Ovládací prvky pro spuštění ladicího programu

V horní části bočního panelu najdete tyto ovládací prvky pro spuštění:

Screenshot of Visual Studio Code debug sidebar controls.

  1. Spuštění ladění
  2. Výběr aktivní spouštěcí konfigurace
  3. Úprava souboru launch.json. V případě potřeby ho vytvořte.
  4. Otevření terminálu ladění

Zobrazení a úprava stavu proměnných

Při analýze příčiny chyby programu sledujte stav proměnných a hledejte neočekávané změny. K tomuto účelu můžete použít panel Variables (Proměnné).

Proměnné jsou uspořádané podle oboru:

  • Lokální proměnné jsou dostupné v aktuálním oboru, obvykle v aktuální funkci.
  • Globální proměnné jsou přístupné všude v programu. Sem patří také systémové objekty z modulu runtime JavaScriptu, takže nebuďte překvapeni, když tu uvidíte spoustu položek.
  • Proměnné uzavření jsou přístupné z aktuálního uzavření (pokud existuje). Uzavření kombinuje lokální obor funkce s oborem vnější funkce, do které patří.

Výběrem šipky můžete obory a proměnné rozbalit. Když rozbalíte objekty, zobrazí se všechny vlastnosti definované v objektu.

Hodnotu proměnné je možné změnit průběžně poklikáním na proměnnou.

Když najedete myší na parametr funkce nebo proměnnou přímo v okně editoru, můžete si také prohlédnout její hodnotu.

Screenshot of variable hover during debugging.

Sledování proměnných

Může být zdlouhavé hledat stav proměnné pokaždé, když ho chcete sledovat v čase nebo v různých funkcích. Tehdy vám přijde vhod panel Watch (Kukátko).

Výběrem tlačítka Plus můžete zadat název proměnné nebo výraz, který chcete sledovat. Alternativně můžete na proměnnou v panelu Variables (Proměnné) kliknout pravým tlačítkem a vybrat Add to watch (Přidat do kukátka).

Při spuštění kódu se automaticky aktualizují všechny výrazy uvnitř panelu kukátků.

Zásobník volání

Vždy, když váš program vkročí do nějaké funkce, přidá se do zásobníku volání položka. S nárůstem složitosti vaší aplikace a častým voláním funkcí uvnitř jiných funkcí představuje tento zásobník záznam volání funkcí.

Můžete ho využít při hledání zdroje výjimky. Když se váš program neočekávaně chybově ukončí, často v konzole uvidíte něco, co se podobá následujícímu příkladu:

Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at OrderProcessor.OrderQueue.ProcessNewOrders(String[] orderIds) in C:\Users\Repos\OrderProcessor\OrderQueue.cs:line 12
   at OrderProcessor.Program.Main(String[] args) in C:\Users\Repos\OrderProcessor\Program.cs:line 9

Skupina řádků at [...] pod chybovou zprávou se nazývá trasování zásobníku. Tento zásobník vypisuje název a původ každé funkce, která byla před ukončením s výjimkou volána. Může být trochu obtížné dešifrovat, protože zahrnuje také interní funkce z modulu runtime .NET.

V této situaci oceníte panel Call stack (Zásobník volání) v editoru Visual Studio Code. V tomto panelu jsou nežádoucí informace standardně odfiltrovány a zobrazují se jen relevantní funkce z vašeho vlastního kódu. Rozvinutím tohoto zásobníku volání můžete zjistit, kde výjimka vznikla.

Panel zarážek

Na panelu Breakpoints (Zarážky) si můžete zobrazit a přepínat všechny zarážky, které jste umístili do kódu. Můžete také přepínat možnosti přerušení u zachycených nebo nezachycených výjimek. Prostřednictvím panelu Breakpoints (Zarážky) můžete zkoumat stav programu, a když dojde k výjimce, zpětně vystopovat její zdroj pomocí zásobníku volání.

Řízení provádění

Pomocí těchto ovládacích prvků můžete ovládat postup provádění programu.

Screenshot of Visual Studio Code debugger execution controls.

Zleva doprava se jedná o tyto ovládací prvky:

  • Pokračovat nebo pozastavit provádění: Pokud je provádění pozastaveno, bude pokračovat až do další zarážky. Pokud program běží, přepne se toto tlačítko na tlačítko pro pozastavení, kterým můžete provádění pozastavit.
  • Krok za krokem: Provede další příkaz kódu v aktuálním kontextu.
  • Krok do: Podobně jako krok přes, ale pokud je dalším příkazem volání funkce, přejděte na první příkaz kódu této funkce (stejný jako step příkaz).
  • Krok ven: Pokud jste uvnitř funkce, spusťte zbývající kód této funkce a přejděte zpět na příkaz po počátečním volání funkce (stejné jako out příkaz).
  • Restart: Restartujte program od začátku.
  • Zastavení: Ukončete spuštění a ukončete ladicí program.

Použití konzoly ladění

Konzolu ladění můžete zobrazit nebo skrýt výběrem kombinace kláves Ctrl+Shift+Y pro Windows a Linux. Pokud používáte Mac, stiskněte klávesy Cmd+Shift+Y. Pomocí konzoly ladění můžete vizualizovat protokoly konzoly aplikace. Můžete ho také použít k vyhodnocení výrazů nebo spuštění kódu v aktuálním spouštěcím obsahu, jako jsou příkazy nebo názvy proměnných v integrovaném ladicím programu .NET.

Výraz .NET můžete zadat do vstupního pole v dolní části konzoly ladění a pak ho vyhodnotit výběrem klávesy Enter . Výsledek se zobrazí přímo v konzole.

Screenshot of Visual Studio Code debug console.

Pomocí konzoly ladění můžete rychle zkontrolovat hodnotu proměnné, otestovat funkci s odlišnými hodnotami nebo změnit aktuální stav.

Poznámka:

Zatímco konzola ladění je velmi užitečná pro spouštění a vyhodnocování kódu .NET, může být trochu matoucí, když se pokoušíte spustit nebo ladit konzolovou aplikaci .NET, protože konzola ladění nepřijímá vstup terminálu pro spuštěný program.

Abyste mohli při ladění zpracovávat vstup z terminálu, můžete používat integrovaný terminál (jedno z oken editoru Visual Studio Code) nebo externí terminál. V tomto kurzu budete používat integrovaný terminál.

  1. Otevřete soubor .vscode/launch.json.

  2. Nastavení console změňte na integratedTerminal z:

    "console": "internalConsole",
    

    Do:

    "console": "integratedTerminal",
    
  3. Uloží vaše změny.

V další lekci se dozvíte, jak pomocí ladicího programu opravit chybu ve Fibonacciho kódu, který jsme viděli dříve.