Sdílet prostřednictvím


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:

Požadavky

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.

    Snímek obrazovky, který ukazuje, jak se zarážky zobrazují na levém okraji souboru kódu v prostředí 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 zarážku.

    Snímek ukazuje, jak zakázat bod přerušení 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 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.

    Snímek obrazovky, který ukazuje, jak vybrat možnost ke konfiguraci podmínek pro zarážku v aplikaci Visual Studio.

  • 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.

    snímek obrazovky, který ukazuje, jak vytvořit akce trasovacího bodu pro výstupní bod v sadě Visual Studio

    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:

    Snímek obrazovky, který ukazuje hodnotu DataTipu pro proměnnou v ladicím programu Visual Studio.

  • 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:

    Snímek obrazovky, který zobrazuje okno Autos v ladicím programu sady Visual Studio

    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:

    Snímek obrazovky s oknem Místní v ladicím programu sady Visual Studio

    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:

    snímek obrazovky okna Watch v ladicím programu Visual Studio

    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, bytesa bytearray jsou k dispozici pro kontrolu.

    Rozevírací menu Zobrazení nabízí čtyři možnosti vizualizace: text, HTML, XML nebo JSON.

    snímek obrazovky, který ukazuje, jak přistupovat k vizualizérům pomocí 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, který zobrazuje vyskakovací 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í. 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.

    snímek obrazovky, který zobrazuje okno Nastavení výjimek v ladicím programu sady Visual Studio

    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í.

    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
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).

    snímek obrazovky, který ukazuje, jak pracovat s oknem Python Debug Interactive v sadě Visual Studio.

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:

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 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:

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 4.x ptvsd:

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 prozkoumejte 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. PowerShell umožňuje také odinstalaci pomocí příkazu pip uninstall ptvsd.

  4. 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:

  1. V okně Prostředí Pythonu přejděte na záložku Balíčky.

  2. 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.)

    Snímek obrazovky, který ukazuje, jak vybrat příkaz '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 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:

  1. Otevřete okno příkazů v sadě Visual Studio tak, že vyberete Zobrazení>Jiné okna>Příkazové okno.

  2. Zadejte následující příkaz:

    DebugAdapterHost.Logging /On /OutputWindow
    
  3. 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.

    snímek obrazovky, který zobrazuje výstup ladicího programu v okně Výstup ve Visual Studio

  4. 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
    
  5. Spusťte ladění a znovu reprodukujte váš problém. Protokoly ladicího programu se nacházejí v %temp%\DebugAdapterHostLog.txt.