Návod: Jak spustit kód v debuggeru v prostředí Visual Studio

Tento článek představuje krok 4 v sérii kurzů Práce s Pythonem v sadě Visual Studio.

Visual Studio poskytuje možnosti pro správu projektů, bohaté prostředí pro úpravy, interaktivní oknoa plnohodnotné ladění kódu Pythonu. V kroku 4 této série kurzů použijete ladicího programu ke spuštění kódu krok za krokem, včetně každé iterace smyčky. V ladicím programu můžete program pozastavit, kdykoli jsou splněny určité podmínky. V jakémkoli okamžiku, kdy je program pozastaven, můžete prozkoumat celý stav programu a změnit hodnotu proměnných. Tyto akce jsou nezbytné pro sledování chyb programu a také poskytují užitečné pomůcky pro sledování přesného toku programu.

V kroku 4 kurzu se naučíte:

  • Spuštění kódu Pythonu v ladicím programu v sadě Visual Studio
  • Nastavte zarážky a podmínky
  • Prozkoumání stavu programu a změna proměnných
  • Prozkoumání ladicího programu oken a akcí

Požadavky

Příprava souboru Pythonu

Pokud se chcete připravit na cvičení ladění, aktualizujte soubor projektu Pythonu tak, aby obsahoval robustnější kód:

  1. V editoru otevřete soubor projektu Pythonu (.py).

  2. Nahraďte kód v souboru následujícím kódem. Tato verze kódu rozšiřuje funkci make_dot_string, abyste mohli prozkoumat její diskrétní kroky v ladicím programu. Přesune smyčku for do funkce main a spustí ji explicitně voláním funkce main:

    from math import cos, radians
    
    # Create a string with spaces proportional to a cosine of x in degrees
    def make_dot_string(x):
        rad = radians(x)                             # cos works with radians
        numspaces = int(20 * cos(rad) + 20)          # Scale to 0-40 spaces
        st = ' ' * numspaces + 'o'                   # Place 'o' after the spaces
        return st
    
    def main():
        for i in range(0, 1800, 12):
            s = make_dot_string(i)
            print(s)
    
    main()
    

Spuštění ladění

Teď jste připraveni začít kontrolovat aktualizovaný kód Pythonu v Debugger.

  1. Potvrďte, že kód funguje správně, vyberte Ladění>Spustit ladění na panelu nástrojů nebo použijte klávesovou zkratku F5. Tyto příkazy spustí kód v Debuggeru.

    Ladicí program nezjistí žádné problémy, takže se program úspěšně spustí. Otevře se okno výstupu a zobrazí se několik iterací kosinusového vzoru. Výběrem libovolného klíče zavřete okno výstupu.

    Spropitné

    Pokud chcete okno výstupu po dokončení programu automaticky zavřít, vyberte Tools>Options, rozbalte kartu Python>ladění a zrušte zaškrtnutí políčka Čekat na vstup, když proces ukončí normálně položka.

  2. Nastavte zarážku na příkazu smyčky for pomocí jedné z následujících metod:

    • Vyberte levý okraj pro řádek kódu.
    • Klikněte pravým tlačítkem myši na řádek kódu a vyberte Bod přerušení>Vložit bod přerušení.
    • Umístěte ukazatel vkládání do řádku kódu a vyberte Ladit>Přepnout zarážku (nebo použijte klávesovou zkratku F9).

    Zarážky zastaví provádění kódu v označeném bodě, abyste mohli zkontrolovat stav programu. Na každém řádku, který má nastavenou zarážku, se zobrazí červená tečka.

    snímek obrazovky, který ukazuje, jak nastavit zarážku v debuggeru ve Visual Studiu

  3. Znovu spusťte ladicí program (F5). Spuštěný kód programu se zastaví na řádku s nastavenou zarážkou. Teď můžete zkontrolovat zásobník volání a prozkoumat proměnné pro tento stav spuštěného kódu programu.

    Visual Studio nabízí mnoho způsobů, jak sledovat kód programu a data spouštění, včetně následujících oken:

    • Zásobník volání zobrazuje historii volání funkcí a metod kódem programu.
    • Definované proměnné, které jsou v rámci působnosti, se zobrazí v okně Autos.
    • Zobrazení Locals zobrazuje všechny proměnné, které Visual Studio najde v aktuálním oboru (včetně funkcí), dokonce ještě před jejich definováním v kódu.

    Pokud chcete zobrazit úplný seznam dostupných oken a akcí, vyberte Ladit>Windows.

    Můžete otevřít ladicí nástroj okno a zobrazit stav svého programu, když dojde k zarážce:

    snímek obrazovky ladicích oken, která zobrazují stav programu, když se Visual Studio zastaví na nastavené zarážce.

Použití akcí ladicího programu

Když Visual Studio zastaví provádění kódu na bodě přerušení, můžete použít několik příkazů k procházení kódem nebo spuštění bloků kódu, před tím než se znovu pozastaví. Příkazy jsou k dispozici na několika místech v sadě Visual Studio, včetně panelu nástrojů Ladicí program, nabídky Ladění, místní nabídky po kliknutí pravým tlačítkem v editoru kódu a prostřednictvím klávesových zkratek.

Ladicí program panel nástrojů v horní části okna sady Visual Studio poskytuje rychlý přístup k nejběžnějším příkazům ladění:

snímek obrazovky s panelem nástrojů ladicího programu v sadě Visual Studio

Následující tabulka shrnuje tyto příkazy tak, jak se zobrazují zleva doprava na panelu nástrojů:

Akce Zkratka Popis
Pokračovat F5 Spusťte kód, dokud se nedostanete na další bod přerušení nebo do dokončení programu.
Rozbít vše Ctrl+Alt+Break Pozastavte dlouhotrvající program.
zastavit ladění Shift+F5 Zastavte program v aktuálním okamžiku a ukončete ladicí program .
Restartovat Ctrl+Shift+F5 Zastavte program v aktuálním okamžiku a znovu spusťte jeho provádění od začátku v ladicím programu .
Zobrazit další příkaz Alt+Num+\ Vraťte se k dalšímu příkazu, který se má spustit v kódu. Tento příkaz vám pomůže najít místo v kódu, kde se Debugger zastavil.
Vstup do F11 Spusťte další příkaz a poté zastavte. Pokud je dalším příkazem volání funkce, Ladicí program vstoupí do funkce a zastaví se na prvním řádku.
krok přes F10 Spusťte další příkaz, včetně volání funkce (spuštění veškerého kódu) a použití jakékoli návratové hodnoty. Tento příkaz umožňuje snadno přeskočit funkce, které nepotřebujete ladit.
Vyjít ven shift+F11 Spusťte kód až do konce aktuální funkce a pak přejděte k volajícímu příkazu a pozastavte ho. Tento příkaz je užitečný, když nepotřebujete ladit zbytek aktuální funkce.

Abyste mohli pracovat s akcemi ladicího programu ve vašem kódu v Pythonu, postupujte následovně:

  1. Překročte příkaz smyčky for pomocí akce Krok přes.

    krokování způsobí, že ladicí program spustí aktuální řádek kódu, včetně jakékoli volané funkce, a okamžitě se znovu pozastaví. Po provedení kroku si všimněte, že proměnná i je nyní definována v oknech místní a automatická .

  2. krok přes další řádek kódu, který volá funkci make_dot_string.

    V tomto případě Krok přes způsobí, že ladicí program spustí celou funkci make_dot_string a pozastaví se po návratu z funkce. Ladicí program nezastaví uvnitř dané funkce, pokud tam neexistuje samostatná zarážka.

  3. Pokračujte v krokování přes kód ještě několikrát a sledujte, jak se mění hodnoty v okně Locals nebo Autos.

  4. V okně Místní hodnoty nebo automatické poklikejte na sloupec Hodnota proměnné a upravte hodnotu. V tomto příkladu změňte hodnotu proměnné s na 'Hello, Python Application'. Nezapomeňte hodnotu uzavřít do jednoduchých uvozovek. Vyberte Zadejte nebo libovolnou oblast mimo hodnotu, aby se změny použily.

    Snímek obrazovky, který ukazuje, jak změnit hodnotu proměnné v okně Místní během ladění v sadě Visual Studio.

  5. Pokračujte v procházení kódu pomocí Krok do až do volání funkce make_dot_string.

    U funkce Krok do způsobí, že ladicí program zavolá funkci i krok do kódu funkce. Když je proces ladění uvnitř funkce, můžete prozkoumat jeho místní proměnné a procházet jeho kód konkrétně. V tomto příkladu se akce Krok do přesune do funkce make_dot_string.

  6. Pokračujte v postupu krok za krokem s Krok do, až do návratu z funkce make_dot_string.

    Když dosáhnete konce kódu funkce make_dot_string, další krok vrátí *ladicí program do smyčky for s novou návratovou hodnotou v proměnné s.

    Při dalším kroku k příkazu print si všimněte, že akce Krok do příkazu print tuto funkci nezadá. Toto chování je způsobeno tím, že funkce print není napsaná v Pythonu. Je to nativní kód uvnitř modulu runtime Pythonu.

  7. Pokračujte v používání Krok do, dokud nebudete opět částečně uvnitř funkce make_dot_string, poté použijte Krok ven a všimněte si, že ladicí program se vrací do smyčky for.

    Pomocí funkce Krokovat ven, Debugger spustí zbytek funkce a pak se automaticky pozastaví ve volajícím kódu. Tato akce je užitečná poté, co projdete nějakou část zdlouhavé funkce a chcete ukončit její sledování. Krokování ven prochází zbývající kód, nebo dokud nedosáhne explicitní zarážky nastavené v volajícím kódu.

  8. Pokračujte ve spuštění programu, dokud nedosáhnete příští zarážky pomocí Pokračovat (F5). Vzhledem k tomu, že máte ve smyčce for nastavenou zarážku, přerušíte ji při další iteraci.

    Pokud chcete ověřit, že program pokračuje v provádění, sledujte změnu hodnoty proměnné s v okně Locals.

Použít podmínky zarážky

Procházení stovek iterací smyčky může být zdlouhavé, takže Visual Studio umožňuje přidat do zarážky podmínku. Když nastavíte podmínku zarážky, Ladicí program program pozastaví na zarážce pouze v případě, že je splněna podmínka.

Následující kroky ukazují, jak definovat podmínku zarážky v příkazu smyčky for tak, aby ladicí program pozastavil pouze tehdy, když hodnota proměnné i překročí 1600:

  1. Chcete-li nastavit podmínku bodu zarážky, klikněte pravým tlačítkem myši na červenou zarážku a vyberte Podmínky nebo použijte klávesovou zkratku Alt+F9>C.

  2. V automaticky otevíraném dialogovém okně Nastavení zarážky nakonfigurujte následující nastavení pro vytvoření podmínky:

    1. Nastavte typ podmínky na podmínkový výraz.

    2. Definujte vyhodnocení podmínky pro situaci, kdy je pravdivé.

    3. Jako hodnotu podmínky zadejte i > 1600.

    4. Vyberte Zavřít.

    Snímek obrazovky, který ukazuje, jak nastavit podmíněnou zarážku v ladicím nástroji v sadě Visual Studio

  3. Pokud chcete pokračovat v ladění a provádění programu, vyberte F5. Všimněte si, že program provádí mnoho iterací, než dosáhne podmíněného bodu přerušení.

    Můžete potvrdit, že Ladicí program správně pozastaví provádění programu, jakmile dosáhne podmíněné zarážky. Po splnění podmínky se v okně Locals zobrazí hodnota proměnné i jako 1608.

  4. Pokud chcete program spustit k dokončení, můžete zarážku zakázat a pokračovat v provádění programu.

    1. Najeďte myší na červenou tečku a vyberte Zakázat, nebo klikněte na červenou tečku pravým tlačítkem myši a vyberte Zakázat bod přerušení.

    2. Vyberte Pokračovat (nebo program spusťte stisknutím klávesy F5).

    Když program skončí, Visual Studio zastaví ladicí relaci a vrátí se do editačního režimu.

    Můžete také odstranit zarážku. Vyberte červenou tečku nebo klikněte pravým tlačítkem myši na tečku a vyberte Odstranit zarážku. Tato akce také odstraní všechny definované podmínky.

Spropitné

V některých situacích, jako je například selhání spuštění samotného interpretu Pythonu, se může okno s výstupem Pythonu zavřít ihned po dokončení programu bez pauzy a bez zobrazení výzvy Stiskněte libovolnou klávesu pro pokračování. Pokud chcete vynutit pozastavení a výzvu, přidejte -i do pole Spustit>Interpreta Argumenty na kartě Ladění. Tento argument umístí interpret Pythonu do interaktivního režimu po spuštění kódu. Program čeká, až vyberete Ctrl+Z+Enter, abyste zavřeli okno.

Další krok