Krok 4: Spuštění kódu v ladicím programu

Předchozí krok: Použití interaktivního okna REPL

Visual Studio poskytuje možnosti pro správu projektů, bohaté prostředí pro úpravy, interaktivní okno a plnohodnotné ladění kódu Pythonu. V ladicím programu můžete krok za krokem spustit kód, včetně každé iterace smyčky. Program můžete pozastavit také vždy, když jsou splněny určité podmínky. V jakémkoli okamžiku, kdy je program pozastaven v ladicím programu, 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.

  1. Nahraďte kód v souboru PythonApplication1.py následujícím kódem. Tato varianta kódu se rozbalí make_dot_string , abyste mohli prozkoumat jeho diskrétní kroky v ladicím programu. Také umístí smyčku formain do funkce a spustí ji explicitně voláním této funkce:

    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()
    
  2. Zkontrolujte, jestli kód funguje správně, a to stisknutím klávesy F5 nebo výběrem příkazu nabídky Ladit>spustit ladění . Tento příkaz spustí kód v ladicím programu. V době, kdy je program spuštěný, zatím nic nebylo provedeno, aby se program pozastavil, jen na několik iterací vytiskne vlnový vzor. Stisknutím libovolné klávesy zavřete okno výstupu.

    Tip

    Pokud chcete po dokončení programu automaticky zavřít okno výstupu, vyberte příkaz nabídky Tools Options (Možnosti nástrojů>), rozbalte uzel Pythonu, vyberte Debugging (Ladění) a zrušte zaškrtnutí možnosti Wait for input when process exits normalně:

    Python debugging option to close the output window on normal program exit

    Další informace o ladění a nastavení argumentů skriptu a interpretu najdete v tématu Ladění kódu Pythonu.

  3. Nastavte na příkaz zarážku for tak, že kliknete jednou na šedý okraj na daném řádku nebo umístíte kurzor na tento řádek a použijete příkaz Ladit>přepnout zarážku (F9). Na šedém okraji se zobrazí červená tečka, která označuje zarážku (jak je uvedeno šipkou níže):

    Setting a breakpoint

  4. Spusťte ladicí program znovu (F5) a zkontrolujte, že spuštění kódu se zastaví na řádku s danou zarážkou. Tady můžete zkontrolovat zásobník volání a prozkoumat proměnné. Proměnné, které jsou v oboru, se zobrazí v okně Automatické hodnoty, když jsou definované. Můžete také přepnout do zobrazení Místní hodnoty v dolní části tohoto okna a zobrazit všechny proměnné, které Visual Studio najde v aktuálním oboru (včetně funkcí), a to i před jejich definováním:

    Breakpoint UI experience for Python

  5. Prohlédněte si panel nástrojů ladění (zobrazený níže) v horní části okna sady Visual Studio. Tento panel nástrojů poskytuje rychlý přístup k nejběžnějším příkazům ladění (které najdete také v nabídce Ladění ):

    Essential debugging toolbar buttons

    Tlačítka zleva doprava:

    Tlačítko Příkaz
    Pokračovat (F5) Program spustí až do další zarážky nebo do dokončení programu.
    Break All (Ctrl+Alt+Break) Pozastaví dlouhotrvající program.
    Zastavit ladění (shift+F5) Program zastaví bez ohledu na to, kde je, a ukončí ladicí program.
    Restartovat (Ctrl+Shift+F5) Program zastaví bez ohledu na to, kde je, a restartuje ho od začátku v ladicím programu.
    Zobrazit další příkaz (Alt+Num)* Přepne na další řádek kódu, který se má spustit. To je užitečné, když se v kódu pohybujete během ladicí relace a chcete se rychle vrátit do bodu, kde je ladicí program pozastavený.
    Krok do (F11) Spustí další řádek kódu a zadává do volaných funkcí.
    Krok za krokem (F10) Spustí další řádek kódu bez zadávání do volaných funkcí.
    Krok ven (Shift+F11) Spustí zbývající část aktuální funkce a pozastaví se ve volajícím kódu.
  6. Krokujte nad for příkazem pomocí příkazu Step Over. Krokování znamená, že ladicí program spustí aktuální řádek kódu, včetně všech volání funkcí, a pak se okamžitě znovu pozastaví. Všimněte si v kódu, jak je teď proměnná i definována v oknech Místní hodnoty a Automatické hodnoty .

  7. Přejděte přes další řádek kódu, který volá make_dot_string a pozastaví. Krok tady konkrétně znamená, že ladicí program spustí celou část make_dot_string a pozastaví se, když se vrátí. Ladicí program se nezastaví uvnitř této funkce, pokud tam neexistuje samostatná zarážka.

  8. Pokračujte v krokování kódu několikrát a sledujte, jak se hodnoty v okně Místní hodnoty nebo Automatické hodnoty mění.

  9. V okně Místní hodnoty nebo Automatické hodnoty poklikejte ve sloupci Hodnota a is upravte hodnotu pomocí proměnných. Stisknutím klávesy Enter nebo výběrem libovolné oblasti mimo tuto hodnotu použijte všechny změny.

  10. Pokračujte v procházení kódu pomocí kroku Do. Krok do znamená, že ladicí program vstoupí do jakéhokoli volání funkce, pro které má informace o ladění, například make_dot_string. Jakmile budete uvnitř make_dot_string , můžete prozkoumat jeho místní proměnné a procházet jeho kód konkrétně.

  11. Pokračujte v krokování krokem do kroku a všimněte si, že když se dostanete na konec make_dot_string, další krok se vrátí do for smyčky s novou návratovou hodnotou v s proměnné. Při dalším kroku k print příkazu si všimněte, že krok dovnitřprint nezadá do této funkce. Důvodem je to, že print není napsaný v Pythonu, ale je to spíše nativní kód uvnitř modulu runtime Pythonu.

  12. Pokračujte v používání kroku Do , dokud nebudete znovu součástí make_dot_string. Pak použijte Krok ven a všimněte si, že se vrátíte do smyčky for . V kroku Out spustí ladicí program zbytek funkce a pak se automaticky pozastaví ve volajícím kódu. To je užitečné, když jste prošli určitou část zdlouhavé funkce, kterou chcete ladit. Projde zbytek a nenastaví explicitní zarážku ve volajícím kódu.

  13. Pokud chcete pokračovat ve spuštění programu, dokud nedosáhnete další zarážky, použijte continue (F5). Vzhledem k tomu, že máte ve for smyčce zarážku, přerušíte ji při další iteraci.

  14. Krokování stovek iterací smyčky může být zdlouhavé, takže Visual Studio umožňuje přidat podmínku do zarážky. Ladicí program pak program pozastaví na zarážce, pouze pokud je splněna podmínka. Můžete například použít podmínku se zarážkou na for příkazu, aby se pozastavila pouze v případě, že hodnota i překročí 1600. Pokud chcete nastavit podmínku, klikněte pravým tlačítkem myši na červenou tečku zarážky a vyberte Podmínky (Alt+F9>C). V Nastavení zarážce, která se zobrazí, zadejte i > 1600 jako výraz a vyberte Zavřít. Stisknutím klávesy F5 pokračujte a všimněte si, že program spouští mnoho iterací před dalším koncem.

    Setting a breakpoint condition

  15. Pokud chcete program spustit k dokončení, zakažte zarážku tak, že kliknete pravým tlačítkem myši na tečku na okraji a vyberete Zakázat zarážku (Ctrl+F9). Pak program spusťte stisknutím klávesy Continue (nebo stiskněte klávesu F5). Když program skončí, Visual Studio zastaví svoji ladicí relaci a vrátí se do režimu úprav. Zarážku můžete také odstranit tak, že vyberete jeho tečku nebo kliknete pravým tlačítkem myši na tečku a vyberete Odstranit zarážku. Odstraní také všechny podmínky, které jste předtím nastavili.

Tip

V některých situacích, jako je například selhání spuštění interpreta Pythonu, se okno výstupu může zobrazit pouze krátce a pak se automaticky zavře, aniž byste měli šanci zobrazit všechny chybové zprávy. Pokud k tomu dojde, klikněte pravým tlačítkem myši na projekt v Průzkumník řešení, vyberte Vlastnosti, vyberte kartu Ladění a pak přidejte -i do pole Argumenty interpreta. Tento argument způsobí, že interpret po dokončení programu přejde do interaktivního režimu, čímž okno ponechá otevřené, dokud nezadáte ctrl+Z>Enter, aby se ukončilo.

Další krok

Přejít hlouběji