Ladění vašeho kódu Pythonu v programu Visual Studio
Visual Studio poskytuje komplexní prostředí ladění pro Python. V tomto článku se dozvíte, jak můžete připojit ladicí program ke spuštěným procesům a vyhodnotit výrazy v oknech Watch a Immediate. 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říkaza další.
Informace o ladění specifické pro konkrétní scénář najdete v následujících článcích:
- vzdálené ladění Linuxu
- ladění Pythonu nebo C++ ve smíšeném režimu
- symboly pro ladění ve smíšeném režimu
Požadavky
Visual Studio nainstalované s podporou úloh Pythonu Další informace najdete v tématu Instalace podpory Pythonu v sadě Visual Studio.
Kód Pythonu, který se má použít s ladicím programem
Ladění kódu s projektem i bez něj
Pokud chcete řídit prostředí a argumenty Pythonu, nejprve vytvořte projekt pro váš kód. Projekt můžete vytvořit pomocí šablony projektu Z existujícího 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. Chcete-li ladit kód v samostatném souboru Pythonu, otevřete soubor ve Visual Studiu a vyberte Ladit>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.
Prozkoumejte základní ladění
Základní pracovní postup ladění zahrnuje nastavení zarážek, procházení kódu krok za krokem, kontrolu hodnot a řešení 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í najdete v tématu Nastavení možností ladění projektu.
Nastavení spouštěcího souboru projektu
Spouštěcí soubor projektu se zobrazí tučně v Solution Explorer . Můžete zvolit, který soubor se má použít jako spouštěcí soubor.
- Chcete-li zadat soubor projektu jako spouštěcí soubor, klepněte pravým tlačítkem myši na soubor a vyberte Nastavit jako spouštěcí položku.
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é body přerušení můžou být pro vývojáře, kteří pracovali s jinými programovacími jazyky, v Pythonu 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.
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 zarážku.
Nastavení podmínek a akcí
Podmínky, za kterých se zarážka aktivuje, můžete přizpůsobit tak, aby se aktivovala pouze tehdy, když je proměnná nastavena na určitou hodnotu nebo do určitého rozsahu hodnot.
Pokud chcete nastavit podmínky, klikněte pravým tlačítkem myši na červenou tečku zarážky a vyberte Podmínky. Dialogové okno Nastavení zarážky se otevře.
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 ve Visual Studio najdete pod názvem Podmínky zarážek.
Také máte možnosti nastavit Akce pro bod přerušení. Můžete vytvořit zprávu pro přihlášení do okna výstupu a volitelně můžete zadat, aby bylo možné pokračovat v provádění automaticky.
Protokolování zprávy vytvoří tracepoint, který nepřidá kód protokolování přímo 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č nebo kosočtverec.
Procházení kódu krok za krokem
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ů Ladění, 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 | Zkratka | Popis |
---|---|---|
Zastavit | Shift + F5 | Zastavte ladicí relaci. |
Restartovat | Ctrl+Shift+F5 | Restartujte aktuální relaci ladění. |
Pokračovat | F5 | Spusťte kód, než se dostanete na další bod přerušení. |
Vstoupit do | F11 | Spusťte další příkaz a pak zastavte. Pokud je dalším příkazem volání funkce, ladicí program se zastaví u první řádky volané funkce. |
Přeskočit | 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ž k umístění kurzoru v editoru. Tento příkaz umožňuje snadno přeskočit segment kódu, který nepotřebujete ladit. |
nastavit další příkaz | Ctrl+Shift+F10 | Změňte aktuální bod spuštění v kódu na pozici 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. |
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 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. K monitorování jednotlivých proměnných a vlastních výrazů můžete použít také okno Watch. Další informace najdete v tématu Kontrola proměnných.
Pokud chcete zobrazit hodnotu pomocí funkce DataTips během ladění, najeďte myší na libovolnou proměnnou v editoru. Můžete vybrat hodnotu proměnné, kterou chcete změnit:
Pokud chcete použít okno Autos, vyberte Ladění>Windows>Autos. Toto okno obsahuje proměnné a výrazy, které jsou blízko aktuálního příkazu. Můžete poklikáním na sloupec hodnoty nebo výběrem a zadáním F2 upravit hodnotu:
Další informace o použití okna Autos naleznete v části Inspektor proměnných v oknech Autos a Lokální proměnné.
Pokud chcete použít okno místní, vyberte Ladit>>Místní. V tomto okně se zobrazí všechny proměnné, které jsou v aktuálním oboru, které je možné znovu upravit:
Další informace o použití okna místní naleznete v tématu Kontrola proměnných vokna Automatické hodnoty a Místní hodnoty .
Pokud chcete použít okna sledování, vyberte Ladit>okna>sledování>sledování 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:
Další informace o použití okna Watch najdete v tématu Nastavení sledování proměnných pomocí oken Watch a QuickWatch.
Pokud chcete zkontrolovat hodnotu řetězce, vyberte Zobrazit (lupa) vpravo od položky Hodnota. Všechny typy
str
,unicode
,bytes
abytearray
jsou k dispozici pro kontrolu.Rozevírací menu Zobrazení nabízí čtyři možnosti vizualizace: text, HTML, XML nebo JSON.
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:
Pokud dojde k chybě, můžete zkontrolovat aktuální stav programu, včetně zásobníku volání. Nicméně, jestliže procházíte kódem, proces ladění bude dále vyhazovat výjimku, dokud není zpracována nebo váš program neskončí.
Chcete-li zobrazit rozšířené zobrazení výjimek, vyberte Ladění>Windows>Nastavení výjimek.
V okně Nastavení výjimek zaškrtávací políčko vedle výjimky určuje, zda ladicí program vždy přeruší, když je tato výjimka vyvolána.
Pokud chcete pro určitou výjimku přerušit častěji, zaškrtněte políčko vedle výjimky v okně Nastavení výjimek.
Ve výchozím nastavení většina výjimek selže, pokud ve zdrojovém kódu nelze najít zachytávač výjimek. 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, když není ošetřeno 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 nezobrazí v okně Nastavení výjimek, 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í váš program se standardním Python spouštěčem, bez argumentů příkazového řádku a bez dalších speciálních cest nebo podmínek. 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íku řešení , vyberte Vlastnostia pak vyberte kartu Ladění.
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 |
---|---|
Standardní spouštěč Pythonu | 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é 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, což umožňuje bezproblémově krokovat mezi kódem C/C++ a kódem Pythonu. |
webový launcher | Spusťte výchozí prohlížeč při spuštění a povolte ladění šablon. Další informace najdete v části ladění webové šablony . |
Django webový spouštěč | Implementujte stejné chování jako vlastnost Web Launcher, 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 k konfigurování běhu 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íku řešení . I když můžete v tomto dialogovém okně zadat cesty hledání, může být jednodušší použít Průzkumníka řešení, kde můžete procházet složky a automaticky převést cesty do relativního formuláře. |
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á 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. Mezi běžné argumenty patří -W ... řídit upozornění, -O mírně optimalizovat program a -u použít nepřipojené vstupně-výstupní operace. Uživatelé IronPythonu budou pravděpodobně toto pole používat k předávání -X možností, jako jsou -X:Frames nebo -X:MTA . |
cesta interpreta | Identifikujte cestu interpreta, která přepíše 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í | Tato vlastnost slouží k přidání položek formuláře <NAME>=\<VALUE> . Visual Studio použije tuto hodnotu vlastnosti naposledy, na všechny existující globální proměnné prostředí, a po nastavení PYTHONPATH 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 sady Visual Studio a okno Python Debug Interactive.
Otevření okna Okamžité
Standardní okno sady Visual Studio Okamžité 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 sekci Okamžité okno.
- Pro otevření okna Okamžité vyberte možnost Ladit>Windows>Okamžité. Můžete také použít klávesovou zkratku Ctrl+Alt+I.
Otevřete interaktivní okno ladění
Okno Python Debug Interactive nabízí bohaté prostředí s kompletním zážitkem Interactive REPL dostupným při ladění, včetně psaní a spouštění kódu. Toto okno se automaticky připojí k libovolnému procesu spuštěného v ladicím programu pomocí spouštěče standardního Pythonu, včetně procesů připojených prostřednictvím Ladění>Připojit 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 Debug Interactive, vyberte Debug>Windows>Python Debug Interactive (Shift+Alt+I).
Okno Debug Interactive podporuje kromě standardních příkazů REPLspeciá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í instrukce. |
$down , $d |
Přesuňte aktuální rámec 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 rámec ID <> argument. |
$load |
Načtěte příkazy ze souboru a spusťte je 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 |
Proveďte krok 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řesuňte aktuální rámec o jednu úroveň ve 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áknaa zásobník volání nejsou synchronizovány 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 ve výchozím nastavení v sadě Visual Studio 2017 ve verzi 15.7 a dřívějších.
- Pokud chcete použít starší verzi ladicího programu, vyberte Nástroje>Možnosti, rozbalte možnosti Python>ladění a vyberte možnost Použít starší ladicí program.
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žívá ladicí program založený na debugpy. 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, visual Studio zobrazí chybu, Debugger nepodporuje toto prostředí Pythonu:
Když Visual Studio hlásí tuto chybu prostředí, musíte použít původní debugger.
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:
Upozornění, balíček ladicího programu je zastaralý, se zobrazí, když používáte starší verzi 4.x ptvsd:
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:
V okně Prostředí Pythonu přejděte na kartu Balíčky.
Do vyhledávacího pole zadejte ptvsd a prozkoumejte nainstalovanou verzi ptvsd:
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. PowerShell umožňuje také odinstalaci pomocí příkazu
pip uninstall ptvsd
.Případně můžete balíček ptvsd aktualizovat na nejnovější verzi podle pokynů v části Řešení problémů s ladicími scénáři.
Řešení potíží se scénáři ladění
Následující scénáře popisují další možnosti odstraňování problémů s konfigurací ladění.
Aktualizovat ptvsd pro 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:
V okně Prostředí Pythonu přejděte na záložku Balíčky.
Do vyhledávacího pole zadejte ptvsd --upgrade a pak vyberte příkaz Spustit: pip install ptvsd --upgrade. (Můžete také použít stejný příkaz z PowerShellu.)
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 debugpy součástí pracovní sady Python pro Visual Studio a aktualizuje se společně s Visual Studio.
Povolit protokolování debuggeru
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:
Otevřete okno příkazů v sadě Visual Studio tak, že vyberete Zobrazení>Jiné okna>Příkazové okno.
Zadejte následující příkaz:
DebugAdapterHost.Logging /On /OutputWindow
Spusťte ladění a projděte si kroky potřebné k zopakování 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í. Poté můžete zkopírovat protokoly z tohoto okna a vložit je do problému na GitHubu, e-mailu nebo jinak.
Pokud Visual Studio přestane reagovat nebo jinak nemáte přístup k oknu výstupu, restartujte Visual Studio, otevřete příkazový řádek a zadejte následující příkaz:
DebugAdapterHost.Logging /On
Spusťte ladění a znovu reprodukujte váš problém. Protokoly ladicího programu se nacházejí v
%temp%\DebugAdapterHostLog.txt
.