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

ladicí program Visual Studio vám může pomáhat s procházením kódu pro kontrolu stavu aplikace a zobrazení toku provádění. Pomocí klávesových zkratek, příkazů ladění, zarážek a dalších funkcí můžete rychle získat kód, který chcete prošetřit. Znalost navigačních příkazů a zástupců ladicího programu usnadňuje a usnadňuje hledání a řešení problémů s aplikacemi.

Poznámka

Pokud se jedná o první pokus o ladění kódu, můžete si před tím, než projdete Tento článek, přečíst ladění pro naprostou začátečníky a techniky a nástroje pro ladění .

Přejít do režimu přerušení

V režimu pozastavení je spuštění aplikace pozastaveno, zatímco funkce, proměnné a objekty zůstávají v paměti. Jakmile je ladicí program v režimu pozastavení, můžete procházet kód. Nejběžnější způsoby, jak rychle získat režim přerušení, je:

  • Zahajte krokování kódu stisknutím klávesy F10 nebo F11. To vám umožní rychle najít vstupní bod vaší aplikace, a pak můžete pokračovat stisknutím příkazů Step pro procházení kódu.

  • Spustit do konkrétního umístění nebo funkce, například nastavením zarážky a spuštěním vaší aplikace.

    například z editoru kódu v Visual Studio můžete pomocí příkazu spustit ke kurzoru spustit aplikaci, připojit ladicí program a získat režim přerušení a pak klávesu F11 přejít k kódu.

    Spustit ke kurzoru a krokovat kód

Jednou v režimu pozastavení můžete použít celou řadu příkazů k procházení kódu. V režimu pozastavení můžete zkontrolovat hodnoty proměnných a vyhledat porušení nebo chyby. U některých typů projektů můžete také provádět úpravy aplikace v režimu pozastavení.

Většina oken ladicího programu, jako jsou moduly a sledovací okna, jsou k dispozici pouze tehdy, když je ladicí program připojen k vaší aplikaci. Některé funkce ladicího programu, jako je například zobrazení hodnot proměnných v okně místních hodnot nebo vyhodnocování výrazů v okně kukátka , jsou k dispozici pouze v případě, že ladicí program je pozastaven (tj. v režimu pozastavení).

Poznámka

Pokud přerušíte kód, který nemá načítat zdrojové soubory nebo soubory symbolů (PDB), ladicí program zobrazí stránku nenalezené zdrojové soubory nebo symboly nebyly nalezeny , které vám pomohou 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 přesto ladit pokyny sestavení v okně zpětného překladu .

Krokovat kód

Příkazy kroku ladicího programu vám pomůžou zkontrolovat stav aplikace nebo zjistit další informace o jeho toku provádění.

Krokovat s kódem řádek po řádku

Chcete-li zastavit u každého příkazu během ladění, použijte krok ladění > do nebo stiskněte klávesu F11.

Ladicí program provede kroky kódu, ne fyzických řádků. Například if klauzule může být napsána na jednom řádku:

int x = 42;
string s = "Not answered";
if( int x == 42) s = "Answered!";
Dim x As Integer = 42
Dim s As String = "Not answered"
If x = 42 Then s = "Answered!"

Nicméně když na tento řádek zadáte krok, ladicí program považuje podmínku za jeden krok a jako další. V předchozím příkladu je podmínka pravdivá.

U vnořeného volání funkce Krok do nejhlouběji vnořené funkce. Například pokud použijete Krok do pro volání jako Func1(Func2()) , ladicí program kroky do funkce Func2 .

Tip

Při provádění jednotlivých řádků kódu můžete umístit ukazatele myši nad proměnné, abyste viděli jejich hodnoty, nebo použít místní okna a kukátka ke sledování změn hodnot. Můžete také vizuálně sledovat zásobník volání při krokování do funkcí. (pouze pro Visual Studio Enterprise, viz metody Map v zásobníku volání při ladění).

Krokovat kód a přeskočit některé funkce

Při ladění nemůžete zajímat funkci, nebo víte, že funguje, jako dobře testovaný kód knihovny. Pomocí následujících příkazů můžete přeskočit kód při krokování kódu. Funkce se pořád spustí, ale ladicí program je přeskočí.

Příkaz klávesnice Příkaz nabídky Ladit Description
F10 Krokovat Pokud aktuální řádek obsahuje volání funkce, Krok over spustí kód a poté pozastaví provádění na prvním řádku kódu po návratu volané funkce.
Posun + Klávesa F11 Krok ven Krok ven pokračuje v běhu kódu a pozastaví provádění, když se vrátí aktuální funkce. Ladicí program přeskočí aktuální funkci.

Spustit do konkrétního umístění nebo funkce

Můžete chtít spustit přímo na konkrétní umístění nebo funkci, pokud přesně víte, jaký kód chcete zkontrolovat, nebo víte, kde chcete spustit ladění.

Spustit na zarážku v kódu

Chcete-li v kódu nastavit jednoduchou zarážku, klikněte na levý levý okraj vedle řádku kódu, kde chcete pozastavit provádění. Můžete také vybrat řádek a stisknout klávesu F9, vybrat > přepínač ladit zarážku nebo kliknout pravým tlačítkem a vybrat zarážku > Vložit zarážku. Zarážka se zobrazí jako červená tečka v levém okraji vedle řádku kódu. Ladicí program pozastaví provádění těsně před spuštěním řádku.

Nastavení zarážky

zarážky v Visual Studio poskytují bohatou sadu dalších funkcí, jako jsou například podmíněné zarážky a trasováním. Podrobnosti najdete v tématu použití zarážek.

Spustit na zarážku funkce

Ladicímu programu můžete sdělit, aby běžel, dokud nedosáhne zadané funkce. Můžete zadat funkci podle názvu nebo si ji můžete vybrat ze zásobníku volání.

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

  1. Vyberte možnost ladit > novou zarážku > funkce .

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

    Nové zarážky funkce – dialogové okno

  3. Vyberte OK.

Pokud je funkce přetížena nebo ve více než jednom oboru názvů, můžete zvolit, který chcete v okně zarážky .

Přetížené zarážky funkcí

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

  1. při ladění otevřete okno zásobník 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 myši na funkci a vyberte možnost Spustit ke kurzoru nebo stiskněte klávesovou zkratku CTRL + F10.

Vizuální trasování zásobníku volání naleznete v tématu metody mapy v zásobníku volání při ladění.

Spustit do umístění kurzoru

Chcete-li spustit do umístění kurzoru, v okně zdrojový kód nebo zásobník volání vyberte řádek, u kterého chcete provést přerušení, klikněte pravým tlačítkem myši a vyberte možnost Spustit ke kurzoru nebo stiskněte klávesovou zkratku CTRL + F10. Výběr možnosti Spustit na kurzor je jako nastavení dočasné zarážky.

Běžet do kliknutí

Při pozastavení v ladicím programu můžete umístit ukazatel myši na příkaz ve zdrojovém kódu nebo v okně zpětného překladu a vybrat ikonu spustit do sem zelená ikona šipky. Když kliknete na tlačítko Spustit, eliminuje nutnost nastavit dočasnou zarážku.

Běžet do kliknutí

Poznámka

Možnost spustit pro je dostupná od začátku v Visual Studio 2017 .

Ručně přerušit do kódu

Chcete-li přerušit následující dostupný řádek kódu ve spuštěné aplikaci, vyberte možnost ladění > Zrušit vše nebo stiskněte klávesu CTRL + ALT + Break.

Přesunutím ukazatele myši změníte tok provádění.

I když je ladicí program pozastaven, žlutá šipka na okraji okna zdrojového kódu nebo zpětný překlad označuje umístění dalšího příkazu, který má být proveden. Další příkaz, který se má provést, můžete změnit přesunutím této šipky. Můžete přeskočit část kódu nebo se vrátit na předchozí řádek. Přesunutí ukazatele je užitečné v situacích, jako je například přeskočení oddílu kódu, který obsahuje známou chybu.

Přesunout ukazatel

Chcete-li změnit další příkaz, který má být spuštěn, ladicí program musí být v režimu pozastavení. V okně zdrojový kód nebo zpětný překlad přetáhněte žlutou šipku na jiný řádek, nebo klikněte pravým tlačítkem na řádek, který chcete spustit, a vyberte nastavit další příkaz.

Čítač programu přejde přímo k novému umístění a pokyny mezi starými a novými body spuštění nejsou spuštěny. Pokud však přesunete bod provádění zpět, příslušné pokyny nejsou vráceny zpět.

Upozornění

  • Přesunutí dalšího příkazu do jiné funkce nebo oboru obvykle způsobí poškození zásobníku volání, což způsobuje chybu za běhu nebo výjimku. Pokud se pokusíte přesunout další příkaz do jiného oboru, ladicí program otevře dialogové okno s upozorněním a nabídne možnost zrušit operaci.
  • v Visual Basic nemůžete přesunout další příkaz do jiného oboru nebo funkce.
  • V nativním jazyce C++, pokud máte povolené kontroly za běhu, může nastavení dalšího příkazu způsobit vyvolání výjimky, pokud provádění dosáhne konce metody.
  • Pokud je funkce Upravit a pokračovat povolená, nastavení dalšího příkazu selže, pokud jste provedli úpravy, které funkce Upravit a pokračovat nemůže přemapovat okamžitě. K tomu může dojít například v případě, že jste upravli kód uvnitř bloku catch. Když k tomu dojde, zobrazí se chybová zpráva s oznámením, že operace není podporovaná.
  • Ve spravovaném kódu nelze přesunout další příkaz, pokud:
    • Další příkaz je v jiné metodě než aktuální příkaz.
    • Ladění bylo zahájeno laděním za běhu.
    • Probíhá odvíjení zásobníku volání.
    • Byla vyvolána výjimka System.StackOverflowException nebo System.Threading.ThreadAbortException.

Ladění kódu bez uživatele

Ve výchozím nastavení se ladicí program pokusí ladit pouze kód aplikace povolením nastavení s názvem Pouze můj kód. Další podrobnosti o tom, jak tato funkce funguje pro různé typy a jazyky projektů a jak ji můžete přizpůsobit, najdete v Pouze můj kód.

Pokud se chcete podívat na kód architektury, kód knihovny třetí strany nebo systémová volání během ladění, můžete zakázat Pouze můj kód. V části Nástroje(nebo > ladění) > zrušte zaškrtnutí políčka Povolit Pouze můj kód ladění. Pokud Pouze můj kód zakázaný, v oknech ladicího programu se zobrazí kód bez uživatele a ladicí program může krokovat s kódem bez uživatele.

Poznámka

Pouze můj kód nepodporuje 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 jste Pouze můj kód, můžete krokovat do systémového volání stejně jako jakékoli jiné volání.

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

Načtení symbolů pro určitou součást systému:

  1. Během ladění otevřete okno Moduly tak, že vyberete Ladit > moduly Windows > moduly nebo stisknete Ctrl + Alt + U.

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

Krokování s vlastnostmi a operátory ve spravovaném kódu

Ladicí program ve výchozím nastavení postupuje nad vlastnostmi a operátory ve spravovaném kódu. Ve většině případů to poskytuje lepší možnosti ladění. Pokud chcete povolit krokování s vlastnostmi nebo operátory, zvolte Možnosti > ladění. Na stránce Obecné ladění zrušte zaškrtnutí políčka Krokovat přes vlastnosti a > operátory (pouze spravované).

Viz také