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
- Projekt aplikace Pythonu, který obsahuje soubor Pythonu (.py) s kódem vytvořeným v kroku 2: Zápis a spuštění kódu Pythonu a Krok 3: Použití interaktivního okna REPL tohoto kurzu.
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:
V editoru otevřete soubor projektu Pythonu (.py).
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čkufor
do funkcemain
a spustí ji explicitně voláním funkcemain
: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.
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.
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.
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:
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í:
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ě:
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á .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.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.
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.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
.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čkyfor
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říkazuprint
tuto funkci nezadá. Toto chování je způsobeno tím, že funkceprint
není napsaná v Pythonu. Je to nativní kód uvnitř modulu runtime Pythonu.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čkyfor
.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.
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:
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.
V automaticky otevíraném dialogovém okně Nastavení zarážky nakonfigurujte následující nastavení pro vytvoření podmínky:
Nastavte typ podmínky na podmínkový výraz.
Definujte vyhodnocení podmínky pro situaci, kdy je pravdivé.
Jako hodnotu podmínky zadejte
i > 1600
.Vyberte Zavřít.
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
jako1608
.Pokud chcete program spustit k dokončení, můžete zarážku zakázat a pokračovat v provádění programu.
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í.
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.