Sdílet prostřednictvím


Procházení kódu pomocí ladicího programu sady Visual Studio

Ladicí program sady Visual Studio vám pomůže procházet kód, abyste zkontrolovali stav aplikace a zobrazili jeho tok provádění, který se také označuje jako krokování kódu. K rychlému získání kódu, který chcete prozkoumat, můžete použít klávesové zkratky, příkazy ladění, zarážky a další funkce. Když se seznámíte s navigačními příkazy a zkratkami ladicího programu, můžete rychleji a snadněji najít a vyřešit problémy s aplikacemi. Seznam nejběžnějších klávesových zkratek souvisejících s navigaci a laděním kódu najdete v části Ladění v klávesových zkratkách.

Poznámka

Pokud s laděním kódu teprve začínáte, možná si budete chtít přečíst ladění pro absolutní začátečníky a techniky ladění a nástroje, než si přečtete tento článek.

Spuštění ladění a přechod do režimu přerušení

Některé navigační příkazy spustí vaši aplikaci a automaticky připojí ladicí program. Aplikace se pozastaví na konkrétním řádku kódu na základě příkazu, který jste použili k zahájení navigace, a zadáte režim přerušení (to znamená, že se aplikace pozastaví v ladicím programu).

V režimu pozastavení se provádění aplikace pozastaví, zatímco funkce, proměnné a objekty zůstanou v paměti. Pokud je ladicí program v režimu přerušení, můžete procházet kód. Existují dva velmi běžné způsoby, jak rychle přejít do režimu přerušení:

  • Nastavte přerušení a spusťte svou aplikaci.

  • Přejít na konkrétní umístění nebo funkci.

    V editoru kódu ve Visual Studio můžete například použít příkaz Spustit k kurzoru ke spuštění aplikace s připojeným ladicím programem a vstoupit do režimu přerušení. Pak můžete pomocí krokových příkazů procházet kód.

    animace, která zobrazuje výběr možnosti Spustit na kurzor a F11.

    animace, která zobrazuje výběr možnosti Spustit na kurzor a F11.

Příkazy pro krokování kódu se dají použít ke spuštění vaší aplikace, ale běžněji se používají, když přejdete do režimu přerušení.

Některé navigační příkazy se většinou používají v režimu přerušení (tedy když jste v ladicím programu pozastaveni).

Ladění a režim přerušení

Když jste v režimu přerušení, můžete k procházení kódu použít různé příkazy. Můžete prozkoumat hodnoty proměnných a vyhledat porušení nebo chyby. U některých typů projektů můžete také upravit aplikaci, když jste v režimu přerušení.

Většina oken ladicího programu, jako jsou okna moduly a okna sledování, jsou k dispozici pouze v případě, že je ladicí program připojen k vaší aplikaci. Některé funkce ladicího programu, jako je zobrazení hodnot proměnných v okně Locals nebo vyhodnocení výrazů v okně Kukátko, jsou k dispozici pouze v případě, že je ladicí program pozastavený (to znamená v režimu přerušení).

Poznámka

Pokud vstoupíte do kódu, který nemá načtené zdrojové soubory nebo symboly (.pdb), ladicí program zobrazí stránku Zdrojové soubory nenalezeny nebo Symboly nenalezeny, která vám pomůže najít a načíst soubory. Viz Určení symbolu (.pdb) a zdrojových souborů. Pokud nemůžete načíst symbol nebo zdrojové soubory, můžete i tak ladit pokyny k sestavení v okně Disassembly.

Krokování kódu

Krokování kódu odkazuje na spuštění vašeho kódu aplikace po jednom příkazu pomocí připojeného ladicího programu. Příkazy kroku ladicího programu vám pomůžou sledovat účinky jednotlivých příkazů a zjistit další informace o jejím toku provádění.

Ponořte se do kódu

Pokud chcete při ladění zastavit jednotlivé příkazy, použijte Ladění>Krok donebo vyberte F11.

Ladicí program prochází příkazy kódu, ne fyzické řádky. Klauzuli if lze například zapsat na jeden řádek:

int x = 42;
string s = "Not answered";
if( int x == 42) s = "Answered!";

Když ale přejdete do tohoto řádku, ladicí program považuje podmínku za jeden krok a výsledek jako druhý. V předchozím příkladu je podmínka pravdivá.

Při volání vnořené funkce Krok do vstoupí do nejhlouběji vnořené funkce. Pokud například použijete příkaz Krok do při volání, jako je Func1(Func2()), ladicí program vstoupí do funkce Func2.

Spropitné

Při spouštění jednotlivých řádků kódu můžete najet myší na proměnné, pokud chcete vidět jejich hodnoty, nebo použít okna Místní hodnoty a Sledování ke sledování, jak se mění jejich hodnoty. Během kroku do funkcí můžete také vizuálně sledovat zásobník volání . (Pouze pro Visual Studio Enterprise najdete mapové metody v zásobníku volání při ladění.)

Krokování kódem a vynechání některých funkcí

Při ladění vás nemusí zajímat funkce. Nebo můžete vědět, že nějaký kód funguje, například dobře otestovaný kód knihovny. Můžete použít následující příkazy k přeskočení kódu během krokování. Funkce stále běží, ale ladicí program je přeskočuje.

Příkaz klávesnice Příkaz nabídky ladění Popis
F10 Přeskočit Pokud aktuální řádek obsahuje volání funkce, Krok přes spustí kód a poté pozastaví provádění na prvním řádku kódu po návratu volané funkce.
shift+F11 krok ven Krok ven pokračuje v provádění kódu a pozastaví provádění po návratu z aktuální funkce. Ladicí program přeskočí aktuální funkci.

Přejít na konkrétní umístění nebo funkci

Pokud přesně víte, jaký kód chcete zkontrolovat, nebo kde chcete začít ladit, můžete raději přejít přímo na konkrétní místo nebo funkci.

  • Nastavení zarážky je nejlepší, pokud si myslíte, že chcete zarážku znovu použít.
  • Další metody slouží ke zjednodušení a jsou podobné nastavení dočasné zarážky.

Spuštění na zarážku v kódu

Pokud chcete nastavit jednoduchou zarážku v kódu, vyberte úplně levý okraj vedle řádku kódu, ve kterém chcete pozastavit provádění. Můžete také vybrat řádek a potom zvolit F9, vybrat Ladění>Přepnout zarážku, nebo kliknout pravým tlačítkem myši a zvolit Zarážka>Vložit zarážku. Zarážka se zobrazí jako červená tečka na levém okraji vedle řádku kódu. Ladicí program pozastaví provádění těsně před spuštěním řádku.

Snímek obrazovky, který ukazuje, jak nastavit bod přerušení

Snímek obrazovky, který ukazuje, jak nastavit bod přerušení

Body přerušení ve Visual Studio poskytují bohatou sadu funkcí, jako jsou podmíněná přerušení a tracepointy. Podrobnosti najdete v tématu Použití zarážek.

Přeskočit na funkční zarážku

Můžete nastavit ladicí program, aby běžel, dokud nedosáhne určené funkce. Funkci můžete zadat podle názvu nebo ji můžete vybrat ze zásobníku volání.

Určení zarážky funkce podle názvu:

  1. Vyberte Ladění>Nový bod přerušení>Bod přerušení funkce.

  2. V dialogovém okně Nová zarážka funkce zadejte název funkce a vyberte její jazyk:

    snímek obrazovky s dialogovým oknem nové zarážky funkce

    snímek obrazovky s dialogovým oknem Nová zarážka funkce

  3. Vyberte OK.

Pokud je funkce přetížená nebo se nachází ve více než jednom oboru názvů, můžete vybrat požadovanou funkci v okně Zarážky.

Snímek obrazovky ukazující okno bodů přerušení

Snímek obrazovky, který ukazuje okno zarážek

Pro výběr zarážky funkce ze zásobníku volání:

  1. Při ladění otevřete okno zásobníku volání výběrem možnosti Ladit>Windows>zásobník volání.

  2. V okně Zásobník volání klikněte pravým tlačítkem na funkci a vyberte Spustit kurzornebo vyberte Ctrl+F10.

Pro informace o vizuálním trasování zásobníku volání naleznete v tématu Metody mapování v zásobníku volání při ladění.

Přesunout se na umístění kurzoru

Pokud chcete spustit na pozici kurzoru, ve zdrojovém kódu nebo v okně Zásobník volání vyberte řádek, kde se chcete zastavit, a potom klikněte pravým tlačítkem myši a vyberte Spustit k kurzoru, nebo vyberte Ctrl+F10. Výběr Spustit do kurzoru se podobá nastavení dočasné zarážky.

Vynucení spuštění na umístění kurzoru

Pokud chcete spustit na umístění kurzoru, vyberte ve zdrojovém kódu nebo v okně Zásobník volání řádek, na kterém chcete zastavit, a potom klikněte pravým tlačítkem myši a vyberte Vynutit spuštění k kurzoru. Když vyberete Vynutit spuštění kurzoru na kurzor, přeskočí všechny zarážky a výjimky první šance, dokud ladicí program nedosáhne řádku kódu, ve kterém se kurzor nachází.

Spustit kliknutím

Zatímco je ladicí program pozastavený, můžete najet myší na výraz ve zdrojovém kódu nebo v okně Disassembly a vybrat zelenou šipku Spustit provádění sem. Použití Spustit až do kliknutí na je podobné jako nastavit dočasnou zarážku.

Snímek obrazovky se šipkou Spustit kliknutím a zelenou šipkou

Poznámka

Run to Click je k dispozici od Visual Studio 2017.

Vynutit spuštění kliknutím

Zatímco je ladicí program pozastavený, můžete najet kurzorem na příkaz ve zdrojovém kódu, stisknout klávesu Shift a pak vybrat Vynutit spuštění na toto místo (dvojitá zelená šipka). Když zvolíte tuto možnost, aplikace připojí ladicí program sady Visual Studio a pozastaví se na místě kurzoru. Všechny zarážky a výjimky první šance zjištěné během provádění jsou dočasně zakázány.

Screenshot znázorňující funkci

Poznámka

Možnost vynuceného spuštění kliknutím na je dostupná od sady Visual Studio 2022.

Ruční rozdělení kódu

Chcete-li v běžící aplikaci přejít na další dostupný řádek kódu, vyberte Debug>Přerušit vše, nebo stiskněte Ctrl+Alt+Break.

Ladění kódu, který není uživatelský

Ve výchozím nastavení se ladicí program pokusí ladit pouze kód aplikace povolením nastavení s názvem Just My Code. Podrobnosti o tom, jak tato funkce funguje pro různé typy projektů a jazyky a o tom, jak ji můžete přizpůsobit, najdete v tématu just My Code.

Pokud se chcete podívat na kód architektury, kód knihovny třetích stran nebo systémová volání při ladění, můžete zakázat pouze můj kód. V Tools (nebo Debug) >Možnosti>Laděnízrušte zaškrtnutí políčka Povolit pouze můj kód. Když je režim Just My Code zakázán, v oknech ladicího programu se zobrazí cizí kód a ladicí program může vstupovat do cizího kódu.

Poznámka

Funkce Just My Code není podporována pro projekty zařízení.

Ladění systémového kódu

Pokud jste načetli symboly ladění pro systémový kód Microsoftu a zakázali funkci Jen můj kód, můžete vstoupit do systémového volání stejně jako do jakéhokoli jiného volání.

Počínaje sadou Visual Studio 2022 verze 17.7 můžete kód .NET automaticky zkompilovat při krokování do externího kódu bez nutnosti ručního načtení symbolů ladění. Další informace naleznete v tématu Generování zdrojového kódu ze sestavení .NET při ladění.

Informace o načítání symbolů Microsoftu najdete v tématu Konfigurace umístění souborů symbolů a možnosti načítání.

Načtení symbolů pro konkrétní systémovou komponentu:

  1. Při ladění otevřete okno Modules tak, že vyberete Ladění>Okna>Modules, nebo stisknete klávesu Ctrl+Alt+U.

  2. V okně Moduly můžete zjistit, které moduly mají symboly načtené ve sloupci Stav symbolu. Klikněte pravým tlačítkem myši na modul, pro který chcete načíst symboly, a vyberte Načíst symboly.

Procházet vlastnosti a operátory ve spravovaném kódu

Ladicí program ve výchozím nastavení přeskakuje vlastnosti a operátory ve spravovaném kódu. Ve většině případů toto chování poskytuje lepší možnosti ladění. Pokud chcete povolit krokování do vlastností nebo operátorů, vyberte Možnosti ladění>. Na stránce Ladění>Obecné zrušte zaškrtnutí políčka Přeskočit vlastnosti a operátory (pouze spravovaného kódu).

Přesuňte ukazatel pro změnu toku vykonávání

Můžete změnit další příkaz, který se spustí přesunutím žlutého ukazatele na spuštění. Tuto funkci můžete použít v režimu pozastavení.

Toto je pokročilá funkce ladicího programu. Další informace naleznete v tématu Přesunutí ukazatele provádění.