Ladění kódu Pythonu v sadě Visual Studio

Visual Studio poskytuje komplexní prostředí ladění pro Python. V tomto článku se dozvíte, jak připojit ladicí program ke spuštěným procesům a vyhodnotit výrazy v oknech Kukátku a Okamžité . V ladicím programu můžete zkontrolovat místní proměnné, používat zarážky, krokovat/odejít/přes příkazy, nastavit další příkaz a další.

Informace o ladění specifické pro konkrétní scénář najdete v následujících článcích:

Požadavky

Ladění kódu s projektem nebo bez projektu

Pokud chcete řídit prostředí a argumenty Pythonu, nejprve vytvořte projekt pro váš kód. Projekt můžete vytvořit pomocí existující šablony projektu kódu Pythonu. Další informace najdete v tématu Vytvoření projektu z existujících souborů kódu Pythonu.

K ladění kódu Pythonu ale nepotřebujete soubor projektu ani řešení v sadě Visual Studio. Pokud chcete ladit kód v samostatném souboru Pythonu, otevřete soubor v sadě Visual Studio a vyberte Spustit>ladění. Visual Studio spustí skript s globálním výchozím prostředím a bez argumentů. Pak máte plnou podporu ladění pro váš kód. Další informace najdete v tématu Prostředí Pythonu.

Prozkoumání základního ladění

Základní pracovní postup ladění zahrnuje zarážky nastavení, krokování kódu, kontrolu hodnot a zpracování výjimek. Ladicí relaci můžete spustit tak, >že vyberete Ladění spustit ladění nebo použijete klávesovou zkratku F5. U projektu tyto akce spustí spouštěcí soubor s aktivním prostředím projektu a všemi argumenty příkazového řádku nebo cestami hledání zadanými pro vlastnosti projektu. Informace o konfiguraci vlastností naleznete v tématu Nastavení možností ladění projektu.

Nastavení spouštěcího souboru projektu

Spouštěcí soubor projektu se v Průzkumník řešení zobrazuje tučně. Můžete zvolit, který soubor se má použít jako spouštěcí soubor.

  • Chcete-li zadat soubor projektu jako spouštěcí soubor, klikněte pravým tlačítkem myši na soubor a vyberte Nastavit jako položku po spuštění.

V sadě Visual Studio 2017 verze 15.6 a novější se zobrazí upozornění, pokud nemáte zadanou spouštěcí sadu souborů. Starší verze sady Visual Studio můžou otevřít okno Výstup se spuštěným interpretem Pythonu nebo se krátce otevře a zavře okno Výstup .

Určení aktivního prostředí

Pokud používáte soubor projektu, ladicí program vždy začíná aktivním prostředím Pythonu pro projekt. Aktuální aktivní prostředí můžete změnit. Další informace najdete v tématu Výběr prostředí Pythonu pro projekt.

Pokud ladíte samostatný soubor kódu Pythonu, Visual Studio spustí skript s globálním výchozím prostředím a bez argumentů.

Nastavení zarážek

Zarážky zastaví provádění kódu v označeném bodě, abyste mohli zkontrolovat stav programu.

Některé zarážky v Pythonu můžou být pro vývojáře, kteří pracovali s jinými programovacími jazyky, překvapivý. V Pythonu je celý soubor spustitelný kód, takže Python ho spustí, když se načte, aby zpracovával všechny definice třídy nejvyšší úrovně nebo funkce. Pokud je zarážka nastavená, můžete zjistit, že ladicí program přerušuje část deklarace třídy. Toto chování je správné, i když je někdy překvapivý.

  • Pokud chcete nastavit zarážku, vyberte v levém okraji editoru kódu nebo klikněte pravým tlačítkem myši na řádek kódu a vyberte Zarážku>Vložit zarážku. Na každém řádku, který má nastavenou zarážku, se zobrazí červená tečka.

    Snímek obrazovky znázorňující, jak se zarážky zobrazují na levém okraji souboru kódu v sadě Visual Studio

  • Pokud chcete odebrat zarážku, vyberte červenou tečku nebo klikněte pravým tlačítkem myši na řádek kódu a vyberte Zarážku>Odstranit zarážku. Zarážku můžete také zakázat tak, že vyberete červenou tečku a vyberete Zarážku> Zakázat.

    Snímek obrazovky, který ukazuje, jak zakázat zarážku na levém okraji souboru kódu v sadě Visual Studio

Nastavení podmínek a akcí

Podmínky, za kterých se zarážka aktivuje, můžete přizpůsobit, například když je proměnná nastavená na určitou hodnotu nebo rozsah hodnot.

  • Pokud chcete nastavit podmínky, klikněte pravým tlačítkem myši na červenou tečku zarážky a vyberte Podmínky. Otevře se dialogové okno Nastavení zarážky.

    V dialogovém okně můžete přidat více podmínek a vytvořit podmíněné výrazy pomocí kódu Pythonu. Úplné podrobnosti o této funkci v sadě Visual Studio najdete v tématu Podmínky zarážky.

    Snímek obrazovky znázorňující výběr možnosti konfigurace podmínek pro zarážku v sadě Visual Studio

  • Můžete také nastavit akce pro zarážku. Můžete vytvořit zprávu, která se bude protokolovat do okna Výstup , a volitelně můžete zadat, aby bylo možné pokračovat v provádění automaticky.

    Snímek obrazovky znázorňující, jak vytvořit akce tracepointu pro zarážku v sadě Visual Studio

    Protokolování zprávy vytvoří trasovací bod , který přímo nepřidá kód protokolování do vaší aplikace.

V závislosti na tom, jak nakonfigurujete podmínky a akce pro zarážku, se změní červená ikona na levém okraji, která označuje nastavení. Může se zobrazit tečka, časovač hodin nebo kosočtverec.

Krokování kódu

Když Visual Studio zastaví provádění kódu na zarážce, existuje několik příkazů, které můžete použít k procházení kódu nebo spuštění bloků kódu před dalším přerušením. Příkazy jsou k dispozici na několika místech v sadě Visual Studio, včetně panelu nástrojů ladicího programu , 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.

Následující tabulka shrnuje tyto příkazy a poskytuje klávesovou zkratku:

Příkaz Zástupce Popis
Continue F5 Spusťte kód, dokud se nedostanete na další zarážku.
Krok do F11 Spusťte další příkaz a zastavte. Pokud je dalším příkazem volání funkce, ladicí program se zastaví na prvním řádku volané funkce.
Krok za krokem 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.
Krok ven Shift+F11 Spusťte kód až do konce aktuální funkce a pak přejděte k volajícímu příkazu. Tento příkaz je užitečný, když nepotřebujete ladit zbytek aktuální funkce.
Spustit na kurzor Ctrl+F10 Spusťte kód až do umístění stříšky v editoru. Tento příkaz umožňuje snadno přeskočit segment kódu, který nepotřebujete ladit.
Nastavení dalšího příkazu Ctrl+Shift+F10 Změňte aktuální bod spuštění v kódu na umístění kurzoru. Tento příkaz umožňuje vynechat segment kódu, který se vůbec spouští, například když víte, že je kód chybný nebo způsobí nežádoucí vedlejší efekt.
Show Next – příkaz Alternativní+číslo+\ 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 je ladicí program zastavený.

Kontrola a úprava hodnot

Když v ladicím programu zastavíte provádění kódu, můžete zkontrolovat a upravit hodnoty proměnných. Okno Kukátko můžete také použít k monitorování jednotlivých proměnných a vlastních výrazů. Další informace naleznete v tématu Kontrola proměnných.

  • Pokud chcete zobrazit hodnotu pomocí funkce Data Tipy během ladění, najeďte myší na libovolnou proměnnou v editoru. Můžete vybrat hodnotu proměnné, kterou chcete změnit:

    Snímek obrazovky znázorňující hodnotu Data Tipy pro proměnnou v ladicím programu sady Visual Studio

  • Pokud chcete použít okno Automatické položky, vyberte Ladit>automatické funkce Systému Windows.> Toto okno obsahuje proměnné a výrazy, které jsou blízko aktuálního příkazu. Můžete poklikáním do sloupce hodnoty nebo výběrem a zadáním klávesy F2 upravit hodnotu:

    Snímek obrazovky znázorňující okno Automatické položky v ladicím programu sady Visual Studio

    Další informace o použití okna Automatické hodnoty naleznete v tématu Kontrola proměnných v oknech Automatické hodnoty a Místní hodnoty.

  • Chcete-li použít okno Místní hodnoty, vyberte Ladit>místní prostředí Systému Windows>. V tomto okně se zobrazí všechny proměnné, které jsou v aktuálním oboru, které je možné znovu upravit:

    Snímek obrazovky znázorňující okno Místní hodnoty v ladicím programu sady Visual Studio

    Další informace o použití okna Místní hodnoty naleznete v tématu Kontrola proměnných v oknech Automatické hodnoty a Místní hodnoty.

  • Pokud chcete použít okna Kukátku, vyberte Ladit>kukátku Windows>Watch>1-4. Tato možnost umožňuje zadat libovolné výrazy Pythonu a zobrazit výsledky. Výrazy se znovu vyhodnotují pro každý krok:

    Snímek obrazovky znázorňující okno Kukátko v ladicím programu sady Visual Studio

    Další informace o použití okna Kukátko najdete v tématu Nastavení kukátka na proměnných pomocí oken Kukátko a QuickWatch.

  • Pokud chcete zkontrolovat řetězcovou hodnotu, vyberte Zobrazit (lupa) na pravé straně položky Hodnota . Všechny strtypy , , unicodebytesa bytearray typy jsou k dispozici pro kontrolu.

    V rozevírací nabídce Zobrazení se zobrazí čtyři možnosti vizualizace: Text, HTML, XML nebo JSON.

    Snímek obrazovky znázorňující přístup k vizualizérům z lupy zobrazení v ladicím programu sady Visual Studio

    Po výběru vizualizace se v automaticky otevíraných dialogech zobrazí necitovaná řetězcová hodnota podle vybraného typu. Řetězec můžete zobrazit pomocí obtékání a posouvání, zvýraznění syntaxe a stromového zobrazení. Tyto vizualizace vám můžou pomoct ladit problémy s dlouhými a složitými řetězci.

Zobrazení výjimek

Pokud během ladění dojde k chybě v programu, ale nemáte pro ni obslužnou rutinu výjimky, ladicí program se přeruší v okamžiku výjimky:

Snímek obrazovky znázorňující místní okno výjimky pro neošetřenou chybu v ladicím programu sady Visual Studio

Pokud dojde k chybě, můžete zkontrolovat aktuální stav programu, včetně zásobníku volání. Pokud ale kód projdete, proces ladění bude pokračovat v vyvolání výjimky, dokud se nezpracuje nebo se program ukončí.

  • Pokud chcete zobrazit rozšířené zobrazení výjimek, vyberte Ladit>výjimku systému Windows>Nastavení.

    Snímek obrazovky znázorňující okno Výjimky Nastavení v ladicím programu sady Visual Studio

    V okně Výjimky Nastavení zaškrtávací políčko vedle výjimky určuje, zda ladicí program vždy přeruší při vyvolání této výjimky.

  • Pokud chcete pro určitou výjimku přerušit častěji, zaškrtněte políčko vedle výjimky v okně Výjimka Nastavení.

  • Ve výchozím nastavení se většina výjimek přeruší, pokud obslužnou rutinu výjimky nelze najít ve zdrojovém kódu. Chcete-li toto chování změnit, klikněte pravým tlačítkem myši na libovolnou výjimku a upravte možnost Pokračovat při neošetřeném v uživatelském kódu . Pokud chcete pro výjimku přerušit méně často, zrušte výběr této možnosti.

  • Pokud chcete nakonfigurovat výjimku, která se nezobrazuje v okně Nastavení výjimka, vyberte Přidat (symbol plus). Zadejte název výjimky, která se má sledovat. Název musí odpovídat úplnému názvu výjimky.

Konfigurace možností ladění projektu

Ve výchozím nastavení ladicí program spustí program se standardním spouštěčem Pythonu, žádnými argumenty příkazového řádku a žádnými dalšími zvláštními cestami nebo podmínkami. Možnosti spuštění projektu Pythonu můžete nakonfigurovat nastavením vlastností ladění.

  • Pokud chcete získat přístup k vlastnostem ladění projektu, klikněte pravým tlačítkem na projekt Pythonu v Průzkumník řešení, vyberte Vlastnosti a pak vyberte kartu Ladění.

    Snímek obrazovky znázorňující vlastnosti ladění projektu Pythonu v ladicím programu sady Visual Studio

Následující části popisují konkrétní vlastnosti.

Definování chování při spuštění

Následující tabulka uvádí možné hodnoty pro vlastnost Režim spuštění. Pomocí této vlastnosti definujte chování spuštění ladicího programu.

Hodnota Popis
Spouštěč standardních pythonů Použijte ladicí kód napsaný v přenosném Pythonu kompatibilní s CPythonem, IronPythonem a variantami, jako je Stackless Python. Tato možnost poskytuje nejlepší prostředí pro ladění čistého kódu Pythonu. Když se připojíte ke spuštěném python.exe procesu, použije se spouštěč zadaný v této vlastnosti. Tento spouštěč také poskytuje ladění ve smíšeném režimu pro CPython, které umožňuje bezproblémově krokovat mezi kódem C/C++ a kódem Pythonu.
Spouštěč webů Spusťte výchozí prohlížeč při spuštění a povolte ladění šablon. Další informace naleznete v části Ladění webové šablony.
Spouštěč webů Django Implementujte stejné chování jako vlastnost spouštěče webu, ale pro prostředí Django. Tuto možnost použijte pouze pro účely zpětné kompatibility.
Spouštěč IronPython (.NET) Použijte ladicí program .NET, který funguje jenom s ironPythonem, ale umožňuje krokovat mezi libovolným projektem jazyka .NET, včetně C# a Visual Basicu. Tento spouštěč se používá, pokud se připojíte ke spuštěném procesu .NET, který je hostitelem IronPythonu.

Definování chování spuštění

Následující tabulka popisuje vlastnosti, které můžete nastavit tak, aby konfigurovali chování spuštění ladicího programu.

Vlastnost Popis
Cesty hledání Zadejte cesty hledání souborů a složek, které Visual Studio používá pro váš projekt. Tyto hodnoty odpovídají položkám zobrazeným v uzlu Cesty hledání projektu v Průzkumník řešení. I když můžete v tomto dialogovém okně zadat cesty hledání, může být jednodušší použít Průzkumník řešení, kde můžete procházet složky a automaticky převést cesty na relativní formulář.
Argumenty skriptu Definujte argumenty pro přidání do příkazu, který Visual Studio používá ke spuštění skriptu, a zobrazí se za názvem souboru skriptu. První položka uvedená v hodnotě je pro skript k dispozici jako sys.argv[1]druhá položka jako sys.argv[2]atd.
Argumenty interpreta Uveďte argumenty, které chcete přidat do příkazového řádku spouštěče před názvem skriptu. Běžnými argumenty je -W ... řídit upozornění, -O mírně optimalizovat program a -u používat nepřipojené vstupně-výstupní operace. Uživatelé IronPythonu budou pravděpodobně toto pole používat k předávání -X možností, například -X:Frames .-X:MTA
Cesta interpreta Identifikujte cestu interpreta, která má přepsat cestu přidruženou k aktuálnímu prostředí. Hodnota může být užitečná pro spuštění skriptu s nestandardním interpretem.
Proměnné prostředí Pomocí této vlastnosti lze přidat položky formuláře <NAME>=\<VALUE>. Visual Studio použije tuto hodnotu vlastnosti jako poslední, nad všechny existující globální proměnné prostředí a po PYTHONPATH nastavení podle nastavení Cesty hledání. V důsledku toho se toto nastavení dá použít k ručnímu přepsání kterékoli z těchto dalších proměnných.

Práce s interaktivními okny

Během ladicí relace můžete použít dvě interaktivní okna: standardní okno Visual Studio Immediate a interaktivní okno ladění Pythonu.

Otevření okna Okamžité

Standardní okno Visual Studio Immediate můžete použít k rychlému vyhodnocení výrazů Pythonu a kontrole nebo přiřazení proměnných ve spuštěném programu. Další informace naleznete v okně Okamžité.

  • Pokud chcete otevřít okno Okamžité , vyberte Ladit>windows>Immediate. Můžete také použít klávesovou zkratku Ctrl+Alt+I.

Otevření interaktivního okna ladění

Okno Python Debug Interactive nabízí bohaté prostředí s úplným interaktivním prostředím REPL dostupným při ladění, včetně psaní a spouštění kódu. Toto okno se automaticky připojí ke všem procesům spuštěným v ladicím programu pomocí spouštěče standardního Pythonu, včetně procesů připojených prostřednictvím připojení ladění>k procesu. Toto okno ale není dostupné při použití ladění C/C++ v smíšeném režimu.

  • Pokud chcete použít okno Ladit interaktivní ladění, vyberte Ladit>Windows>Python Debug Interactive (Shift+Alt+I).

    Snímek obrazovky znázorňující, jak pracovat s oknem Python Debug Interactive v sadě Visual Studio

Ladicí interaktivní okno podporuje kromě standardních příkazů REPL speciální meta-příkazy, jak je popsáno v následující tabulce:

Příkaz Popis
$continue, , $cont$c Spusťte program z aktuálního příkazu.
$down, $d Přesunutí aktuálního rámce o jednu úroveň dolů v trasování zásobníku
$frame Zobrazí aktuální ID rámce.
$frame Přepněte aktuální rámec na zadané ID rámce.
– Vyžaduje <argument ID> rámce.
$load Načtěte příkazy ze souboru a spustí se až do dokončení.
$proc Zobrazí ID aktuálního procesu.
$proc Přepněte aktuální proces na zadané ID procesu.
– Vyžaduje <argument ID> procesu.
$procs Uveďte seznam aktuálně laděných procesů.
$stepin, , $step$s Pokud je to možné, přejděte k dalšímu volání funkce.
$stepout, , $return$r Vystupte z aktuální funkce.
$stepover, , $until$unt Krokujte přes další volání funkce.
$thread Zobrazí aktuální ID vlákna.
$thread Přepněte aktuální vlákno na zadané ID vlákna.
– Vyžaduje <argument ID> vlákna.
$threads Uveďte seznam vláken, která se aktuálně ladí.
$up, $u Přesunutí aktuálního rámce o jednu úroveň v trasování zásobníku
$where, , $w$bt Zobrazí seznam rámců pro aktuální vlákno.

Standardní okna ladicího programu, jako jsou procesy, vlákna a zásobník volání, se nesynchronují s oknem Debug Interactive . Pokud změníte aktivní proces, vlákno nebo rámec v okně Debug Interactive , ostatní okna ladicího programu nebudou ovlivněna. Podobně změna aktivního procesu, vlákna nebo rámce v ostatních oknech ladicího programu nemá vliv na okno Debug Interactive .

Použití staršího ladicího programu

V závislosti na konfiguraci prostředí možná budete muset použít starší ladicí program:

  • Visual Studio 2017 verze 15.7 a starší s Pythonem 2.6, 3.1 až 3.4 nebo IronPython
  • Visual Studio 2019 verze 16.5 a novější s Pythonem 2.6, 3.1 až 3.4 nebo IronPython
  • ptvsd 3.x a dřívější verze 4.x

Starší ladicí program je výchozí v sadě Visual Studio 2017 verze 15.7 a starší.

  • Pokud chcete použít starší ladicí program, vyberte Možnosti nástrojů>, rozbalte možnosti ladění Pythonu>a vyberte možnost Použít starší verzi ladicího programu.

Podpora starších verzí sady Visual Studio nebo Python

Visual Studio 2017 verze 15.8 a novější používá ladicí program založený na ptvsd verze 4.1 a novější. Visual Studio 2019 verze 16.5 a novější používají ladicí program založený na ladění. Tyto dvě verze ladicího programu jsou kompatibilní s Pythonem 2.7 nebo Pythonem 3.5 a novějším.

Pokud používáte některou z těchto verzí sady Visual Studio, ale používáte Python 2.6, 3.1 až 3.4 nebo IronPython, zobrazí Visual Studio chybu, ladicí program nepodporuje toto prostředí Pythonu:

Snímek obrazovky s chybovou zprávou ladicího programu Ladicí program nepodporuje toto prostředí Pythonu

Když Visual Studio hlásí tuto chybu prostředí, musíte použít starší ladicí program.

Podpora starších verzí ptvsd

Pokud používáte starší verzi ptvsd v aktuálním prostředí (například starší verzi 4.0.x nebo verzi 3.x potřebnou pro vzdálené ladění), může visual Studio zobrazit chybu nebo upozornění.

Pokud vaše prostředí používá ptvsd 3.x, Visual Studio zobrazí chybu, balíček ladicího programu nelze načíst:

Snímek obrazovky s chybovou zprávou ladicího programu

Upozornění, balíček ladicího programu je zastaralý, se zobrazí, když používáte starší verzi ptvsd 4.x:

Snímek obrazovky s upozorněním ladicího programu

Když Visual Studio hlásí tyto chyby prostředí, musíte použít starší ladicí program.

Důležité

I když se můžete rozhodnout ignorovat upozornění pro některé verze ptvsd, Visual Studio nemusí fungovat správně.

Správa instalace ptvsd

Pokud chcete spravovat instalaci ptvsd, postupujte takto:

  1. V okně Prostředí Pythonu přejděte na kartu Balíčky.

  2. Do vyhledávacího pole zadejte ptvsd a zkontrolujte nainstalovanou verzi ptvsd:

    Snímek obrazovky, který ukazuje, jak zkontrolovat verzi ptvsd v okně Prostředí Pythonu

  3. Pokud je verze nižší než 4.1.1a9 (verze je součástí sady Visual Studio), vyberte X napravo od balíčku a odinstalujte starší verzi. Visual Studio pak použije jeho sbalenou verzi. (Pomocí příkazu můžete také odinstalovat z PowerShellu pip uninstall ptvsd .)

  4. Případně můžete balíček ptvsd aktualizovat na nejnovější verzi podle pokynů v části Řešení potíží s laděním scénářů.

Řešení potíží se scénáři ladění

Následující scénáře popisují další možnosti řešení potíží s konfigurací ladění.

Upgrade ptvsd for Visual Studio 2019

Pokud máte problémy s ladicím programem v sadě Visual Studio 2019 verze 16.4 a starší, nejprve upgradujte svou verzi ladicího programu následujícím způsobem:

  1. V okně Prostředí Pythonu přejděte na kartu Balíčky.

  2. Do vyhledávacího pole zadejte ptvsd --upgrade a pak vyberte Spustit příkaz: pip install ptvsd --upgrade. (Můžete také použít stejný příkaz z PowerShellu.)

    Snímek obrazovky znázorňující výběr příkazu ptvsd upgrade v okně Prostředí Pythonu

    Pokud problémy potrvají, vytvořte problém v úložišti PTVS na GitHubu.

    Poznámka:

    Pro Visual Studio 2019 verze 16.5 a novější je ladicí program součástí sady Visual Studio Python a aktualizuje se společně se sadou Visual Studio.

Povolení protokolování ladicího programu

V průběhu vyšetřování problému s ladicím programem vás může Microsoft požádat, abyste povolili a shromáždili protokoly ladicího programu, které vám pomůžou s diagnostikou.

Následující kroky povolí ladění v aktuální relaci sady Visual Studio:

  1. Otevřete příkazové okno v sadě Visual Studio tak, že vyberete Zobrazit>jiné okno příkazů systému Windows.>

  2. Zadejte tento příkaz:

    DebugAdapterHost.Logging /On /OutputWindow
    
  3. Spusťte ladění a projděte si kroky potřebné k reprodukci vašeho problému. Během této doby se protokoly ladění zobrazí v okně Výstup v části Protokol hostitele adaptéru ladění. Potom můžete zkopírovat protokoly z tohoto okna a vložit je do problému, e-mailu a tak dále.

    Snímek obrazovky znázorňující výstup protokolování ladicího programu v okně Výstup v sadě Visual Studio

  4. Pokud Visual Studio přestane reagovat nebo nemáte jinak přístup k okně Výstup , restartujte Visual Studio, otevřete příkazové okno a zadejte následující příkaz:

    DebugAdapterHost.Logging /On
    
  5. Spusťte ladění a znovu reprodukujte váš problém. Protokoly ladicího programu se nacházejí v %temp%\DebugAdapterHostLog.txtumístění .