Debuggen von Konfigurationen für Python-Apps in Visual Studio Code (2023)

Die Python-Erweiterung unterstützt das Debuggen verschiedener Arten von Python-Anwendungen. Eine kurze Anleitung zum grundlegenden Debuggen finden Sie unterTutorial – Konfigurieren Sie den Debugger und führen Sie ihn aus. Siehe auch dieFlask-Tutorial. Beide Tutorials demonstrieren Kernkompetenzen wie das Setzen von Haltepunkten und das schrittweise Durchgehen des Codes.

Informationen zu allgemeinen Debugfunktionen wie der Überprüfung von Variablen, dem Festlegen von Haltepunkten und anderen Aktivitäten, die nicht sprachabhängig sind, finden Sie hierDebuggen von VS-Code.

Dieser Artikel befasst sich hauptsächlich mit dem Python-spezifischen DebuggenKonfigurationen, einschließlich der notwendigen Schritte für bestimmte App-Typen und Remote-Debugging.

Konfigurationen initialisieren

Eine Konfiguration steuert das Verhalten von VS Code während einer Debugging-Sitzung. Konfigurationen werden in a definiertlaunch.jsonDatei, die in einem gespeichert ist.vscodeOrdner in Ihrem Arbeitsbereich.

Notiz: Um die Debugkonfiguration zu ändern, muss Ihr Code in einem Ordner gespeichert sein.

Um Debug-Konfigurationen zu initialisieren, wählen Sie zunächst die ausLaufenAnsicht in der Seitenleiste:

Debuggen von Konfigurationen für Python-Apps in Visual Studio Code (1)

Wenn Sie noch keine Konfigurationen definiert haben, wird eine Schaltfläche dazu angezeigtAusführen und Debuggenund einen Link zum Erstellen einer Konfigurationsdatei (launch.json):

Debuggen von Konfigurationen für Python-Apps in Visual Studio Code (2)

Um eine zu generierenlaunch.jsonFühren Sie zum Erstellen einer Datei mit Python-Konfigurationen die folgenden Schritte aus:

  1. Wähle ausErstellen Sie eine launch.json-DateiLink (im Bild oben dargestellt) oder verwenden Sie denLaufen>Offene KonfigurationenMenübefehl.

  2. In der Befehlspalette wird ein Konfigurationsmenü geöffnet, in dem Sie den gewünschten Debug-Konfigurationstyp für die geöffnete Datei auswählen können. Vorerst in derWählen Sie eine Debug-Konfiguration ausMenü, das angezeigt wird, auswählenPython-Datei.Debuggen von Konfigurationen für Python-Apps in Visual Studio Code (3)

    Notiz: Starten einer Debugging-Sitzung über das Debug-Panel,F5oderAusführen > Debuggen startenWenn keine Konfiguration vorhanden ist, wird auch das Debug-Konfigurationsmenü angezeigt, es wird jedoch keine Datei „launch.json“ erstellt.

  3. Die Python-Erweiterung erstellt und öffnet dann einelaunch.jsonDatei, die eine vordefinierte Konfiguration enthält, die auf Ihrer zuvor ausgewählten Konfiguration basiert, in diesem FallPython-Datei. Sie können Konfigurationen ändern (z. B. um Argumente hinzuzufügen) und auch benutzerdefinierte Konfigurationen hinzufügen.

    Debuggen von Konfigurationen für Python-Apps in Visual Studio Code (4)

Die Details der Konfigurationseigenschaften werden später in diesem Artikel unter behandeltStandardkonfiguration und Optionen. Weitere Konfigurationen werden in diesem Artikel ebenfalls beschriebenDebuggen bestimmter App-Typen.

Zusätzliche Konfigurationen

Standardmäßig zeigt VS Code nur die gängigsten Konfigurationen an, die von der Python-Erweiterung bereitgestellt werden. Sie können andere Konfigurationen auswählen, in die Sie einbezogen werden möchtenlaunch.jsondurch die Verwendung derKonfiguration hinzufügenBefehl in der Liste angezeigt und dielaunch.jsonEditor. Wenn Sie den Befehl verwenden, fordert VS Code Sie mit einer Liste aller verfügbaren Konfigurationen auf (wählen Sie unbedingt die aus).PythonMöglichkeit):

Debuggen von Konfigurationen für Python-Apps in Visual Studio Code (5)

Auswählen derAnhängen mit Prozess-IDman liefert folgendes Ergebnis:Debuggen von Konfigurationen für Python-Apps in Visual Studio Code (6)

SehenDebuggen bestimmter App-TypenEinzelheiten zu all diesen Konfigurationen finden Sie hier.

Während des Debuggens zeigt die Statusleiste die aktuelle Konfiguration und den aktuellen Debugging-Interpreter an. Wenn Sie die Konfiguration auswählen, wird eine Liste angezeigt, aus der Sie eine andere Konfiguration auswählen können:

Debuggen von Konfigurationen für Python-Apps in Visual Studio Code (7)

Standardmäßig verwendet der Debugger denselben Interpreter, der für Ihren Arbeitsbereich ausgewählt wurde, genau wie andere Funktionen der Python-Erweiterung für VS Code. Um speziell für das Debuggen einen anderen Interpreter zu verwenden, legen Sie den Wert für festPythonInlaunch.jsonfür die entsprechende Debugger-Konfiguration. Alternativ können Sie den benannten Interpreter in der Statusleiste auswählen, um einen anderen auszuwählen.

Grundlegendes Debuggen

Wenn Sie nur daran interessiert sind, ein Python-Skript zu debuggen, ist es am einfachsten, den Abwärtspfeil neben der Schaltfläche „Ausführen“ im Editor auszuwählen und auszuwählenDebuggen Sie die Python-Datei im Terminal.

Debuggen von Konfigurationen für Python-Apps in Visual Studio Code (8)

Wenn Sie eine Webanwendung mit Flask, Django oder FastAPI debuggen möchten, bietet die Python-Erweiterung dynamisch erstellte Debug-Konfigurationen basierend auf Ihrer Projektstruktur unterAlle automatischen Debug-Konfigurationen anzeigenOption, durch dieAusführen und DebuggenSicht.

Debuggen von Konfigurationen für Python-Apps in Visual Studio Code (9)

Wenn Sie jedoch andere Arten von Anwendungen debuggen möchten, können Sie den Debugger über startenLaufenKlicken Sie dazu auf die AnsichtAusführen und DebuggenTaste.

Debuggen von Konfigurationen für Python-Apps in Visual Studio Code (10)

Wenn keine Konfiguration festgelegt wurde, wird Ihnen eine Liste mit Debugging-Optionen angezeigt. Hier können Sie die entsprechende Option auswählen, um Ihren Code schnell zu debuggen.

Zwei gängige Optionen sind die Verwendung vonPython-DateiKonfiguration, um die aktuell geöffnete Python-Datei auszuführen oder die zu verwendenAnhängen mit Prozess-IDKonfiguration, um den Debugger an einen Prozess anzuhängen, der bereits ausgeführt wird.

Informationen zum Erstellen und Verwenden von Debugkonfigurationen finden Sie imKonfigurationen initialisierenUndZusätzliche KonfigurationenAbschnitte. Sobald eine Konfiguration hinzugefügt wurde, kann sie aus der Dropdown-Liste ausgewählt und mit dem gestartet werdenBeginnen Sie mit dem DebuggenTaste.

Debuggen von Konfigurationen für Python-Apps in Visual Studio Code (11)

Debuggen über die Befehlszeile

Der Debugger kann auch über die Befehlszeile ausgeführt werden. Die Befehlszeilensyntax des Debuggers lautet wie folgt:

python -m debugpy--listen | --verbinden[:][--wait-for-client][--configure- ]...[--log-to ] [--log-to-stderr] | -m  | -c  | --pid []...

Beispielsweise könnten Sie über die Befehlszeile den Debugger über einen angegebenen Port (5678) starten und ein Skript mit der folgenden Syntax erstellen. In diesem Beispiel wird davon ausgegangen, dass das Skript eine lange Laufzeit hat, und das wird weggelassen--wait-for-clientFlag, was bedeutet, dass das Skript nicht darauf wartet, dass der Client eine Verbindung herstellt.

python -m debugpy --listen 5678 ./myscript.py

Sie würden dann die folgende Konfiguration verwenden, um eine Verbindung über die VS Code-Python-Erweiterung herzustellen.

{ "Name":„Python: Anhängen“, "Typ":"Python", "Anfrage":"anfügen", "verbinden": { "Gastgeber":„localhost“, "Hafen":5678}}

Notiz: Die Angabe des Hosts ist optional fürHören, standardmäßig wird 127.0.0.1 verwendet.

Wenn Sie Remote-Code oder Code, der in einem Docker-Container auf dem Remote-Computer oder Container ausgeführt wird, debuggen möchten, müssen Sie den vorherigen CLI-Befehl ändern, um einen Host anzugeben.

python -m debugpy --listen 0.0.0.0:5678 ./myscript.py

Die zugehörige Konfigurationsdatei würde dann wie folgt aussehen.

{ "Name":"Anfügen", "Typ":"Python", "Anfrage":"anfügen", "verbinden": { "Gastgeber":„Remote-Maschinenname“,// Ersetze dies durch den Namen des Remote-Computers "Hafen":5678}}

Notiz: Beachten Sie Folgendes, wenn Sie einen anderen Hostwert als angeben127.0.0.1oderlocalhostSie öffnen einen Port, um den Zugriff von jedem Computer aus zu ermöglichen, was Sicherheitsrisiken birgt. Sie sollten sicherstellen, dass Sie beim Remote-Debuggen entsprechende Sicherheitsvorkehrungen treffen, z. B. die Verwendung von SSH-Tunneln.

FlaggeOptionenBeschreibung
--Hörenoder--verbinden[:]Erforderlich. Gibt die Hostadresse und den Port an, damit der Debug-Adapterserver auf eingehende Verbindungen wartet (--listen) oder eine Verbindung mit einem Client herstellt, der auf eine eingehende Verbindung wartet (--connect). Dies ist dieselbe Adresse, die in der VS-Code-Debugkonfiguration verwendet wird. Standardmäßig lautet die Hostadresselocalhost (127.0.0.1).
--wait-for-clientkeinerOptional. Gibt an, dass der Code erst ausgeführt werden soll, wenn eine Verbindung vom Debug-Server besteht. Mit dieser Einstellung können Sie ab der ersten Zeile Ihres Codes debuggen.
--log-toOptional. Gibt einen Pfad zu einem vorhandenen Verzeichnis zum Speichern von Protokollen an.
--log-to-stderrkeinerOptional. Ermöglicht debugpy, Protokolle direkt in stderr zu schreiben.
--pidOptional. Gibt einen bereits laufenden Prozess an, in den der Debug-Server eingefügt werden soll.
--configure-Optional. Legt eine Debug-Eigenschaft fest, die dem Debug-Server bekannt sein muss, bevor der Client eine Verbindung herstellt. Solche Eigenschaften können direkt genutzt werdenStartKonfiguration, muss aber auf diese Weise eingestellt werdenanfügenKonfigurationen. Wenn Sie beispielsweise nicht möchten, dass sich der Debug-Server automatisch in Unterprozesse einfügt, die von dem Prozess erstellt wurden, an den Sie eine Verbindung herstellen, verwenden Sie--configure-subProcess false.

Notiz:[]kann verwendet werden, um Befehlszeilenargumente an die zu startende App weiterzuleiten.

Debuggen durch Anschließen über eine Netzwerkverbindung

Lokales Skript-Debugging

Es kann vorkommen, dass Sie ein Python-Skript debuggen müssen, das lokal von einem anderen Prozess aufgerufen wird. Beispielsweise debuggen Sie möglicherweise einen Webserver, der verschiedene Python-Skripte für bestimmte Verarbeitungsaufgaben ausführt. In solchen Fällen müssen Sie den VS-Code-Debugger nach dem Start an das Skript anhängen:

  1. Führen Sie VS Code aus, öffnen Sie den Ordner oder Arbeitsbereich, der das Skript enthält, und erstellen Sie einlaunch.jsonfür diesen Arbeitsbereich, falls noch keiner vorhanden ist.

  2. Fügen Sie im Skriptcode Folgendes hinzu und speichern Sie die Datei:

    importierendebugpy# 5678 ist der Standard-Attach-Port in den VS-Code-Debug-Konfigurationen. Sofern kein Host und Port angegeben ist, ist der Host standardmäßig 127.0.0.1debugpy.listen(5678)drucken(„Warten auf Debugger-Anbindung“)debugpy.wait_for_client()debugpy.breakpoint()drucken(„Unterbrechung in dieser Zeile“)
  3. Öffnen Sie ein Terminal mitTerminal: Neues Terminal erstellen, wodurch die ausgewählte Umgebung des Skripts aktiviert wird.

  4. Installieren Sie im Terminal das Debugpy-Paket mitpython -m pip install --upgrade debugpy.

  5. Starten Sie im Terminal Python mit dem Skript, z. B.python3 myscript.py. Sie sollten die Meldung „Warten auf Debugger-Anfügung“ sehen, die im Code enthalten ist, und das Skript wird angehaltendebugpy.wait_for_client()Forderung.

  6. Wechseln Sie zumAusführen und DebuggenSicht (⇧⌘D(Windows, LinuxStrg+Umschalt+D)), wählen Sie die entsprechende Konfiguration aus der Debugger-Dropdown-Liste aus und starten Sie den Debugger.

  7. Der Debugger sollte anhaltendebugpy.breakpoint()Aufruf, ab diesem Zeitpunkt können Sie den Debugger normal verwenden. Sie haben auch die Möglichkeit, andere Haltepunkte im Skriptcode über die Benutzeroberfläche zu setzen, anstatt sie zu verwendendebugpy.breakpoint().

Remote-Skript-Debugging mit SSH

Durch Remote-Debugging können Sie ein Programm lokal in VS Code schrittweise durchlaufen, während es auf einem Remotecomputer ausgeführt wird. Es ist nicht erforderlich, VS Code auf dem Remotecomputer zu installieren. Für zusätzliche Sicherheit möchten oder müssen Sie beim Debuggen möglicherweise eine sichere Verbindung, z. B. SSH, zum Remotecomputer verwenden.

Notiz: Auf Windows-Computern müssen Sie möglicherweise installierenWindows 10 OpenSSHdas zu habensshBefehl.

Die folgenden Schritte beschreiben den allgemeinen Prozess zum Einrichten eines SSH-Tunnels. Mit einem SSH-Tunnel können Sie auf Ihrem lokalen Computer so arbeiten, als ob Sie direkt auf dem Remote-Computer arbeiten würden, und zwar auf sicherere Weise, als wenn ein Port für den öffentlichen Zugriff geöffnet wäre.

Auf dem Remote-Computer:

  1. Aktivieren Sie die Portweiterleitung, indem Sie die öffnensshd_configconfig-Datei (zu finden unter/etc/ssh/auf Linux und darunter%programfiles(x86)%/openssh/etcunter Windows) und Hinzufügen oder Ändern der folgenden Einstellung:

    AllowTcpForwarding ja

    Notiz: Der Standardwert für AllowTcpForwarding ist „Ja“, daher müssen Sie möglicherweise keine Änderung vornehmen.

  2. Wenn Sie etwas hinzufügen oder ändern müsstenAllowTcpForwarding, starten Sie den SSH-Server neu. Führen Sie unter Linux/macOS ausSudo-Dienst SSH-Neustart; unter Windows ausführendienstleistungen.msc, wählen Sie OpenSSH odersshdin der Liste der Dienste und wählen SieNeu starten.

Auf dem lokalen Computer:

  1. Erstellen Sie durch Ausführen einen SSH-Tunnelssh -2 -L sourceport:localhost:destinationport -i Identitätsdatei user@remoteaddress, unter Verwendung eines ausgewählten Ports fürZielhafenund den entsprechenden Benutzernamen und die IP-Adresse des Remote-Computers einBenutzer@Remoteadresse. Um beispielsweise Port 5678 auf der IP-Adresse 1.2.3.4 zu verwenden, lautet der Befehlssh -2 -L 5678:localhost:5678 -i Identitätsdatei Benutzer@1.2.3.4. Sie können den Pfad zu einer Identitätsdatei mithilfe von angeben-ichFlagge.

  2. Stellen Sie sicher, dass in der SSH-Sitzung eine Eingabeaufforderung angezeigt wird.

  3. Erstellen Sie in Ihrem VS Code-Arbeitsbereich eine Konfiguration für das Remote-Debugging in Ihremlaunch.jsonDatei, wobei der Port so eingestellt wird, dass er mit dem in der Datei verwendeten Port übereinstimmtsshBefehl und der Host anlocalhost. Sie nutzenlocalhosthier, weil Sie den SSH-Tunnel eingerichtet haben.

    { "Name":„Python: Anhängen“, "Typ":"Python", "Anfrage":"anfügen", "Hafen":5678, "Gastgeber":„localhost“, „pathMappings“: [{ „localRoot“:„${workspaceFolder}“,// Ordnet C:\Benutzer\Benutzer1\Projekt1 zu „remoteRoot“:"." // Zum aktuellen Arbeitsverzeichnis ~/project1}]}

Debuggen wird gestartet

Nachdem nun ein SSH-Tunnel zum Remotecomputer eingerichtet wurde, können Sie mit dem Debuggen beginnen.

  1. Beide Computer: Stellen Sie sicher, dass identischer Quellcode verfügbar ist.

  2. Beide Computer: installierendebugpyverwendenpython -m pip install --upgrade debugpyin Ihre Umgebung (die Verwendung einer virtuellen Umgebung ist zwar nicht erforderlich, wird jedoch als bewährte Vorgehensweise empfohlen).

  3. Remote-Computer: Es gibt zwei Möglichkeiten anzugeben, wie eine Verbindung zum Remote-Prozess hergestellt werden soll.

    1. Fügen Sie im Quellcode die folgenden Zeilen hinzu und ersetzen Sie sieAdressemit der IP-Adresse und Portnummer des Remote-Computers (IP-Adresse 1.2.3.4 wird hier nur zur Veranschaulichung angezeigt).

      importierendebugpy# Anderen Computern erlauben, sich über diese IP-Adresse und diesen Port mit debugpy zu verbinden.debugpy.listen(('1.2.3.4',5678))# Halten Sie das Programm an, bis ein Remote-Debugger angeschlossen istdebugpy.wait_for_client()

      Die verwendete IP-AdresseHörensollte die private IP-Adresse des Remote-Computers sein. Anschließend können Sie das Programm normal starten und anhalten, bis der Debugger eine Verbindung herstellt.

    2. Starten Sie den Remote-Prozess über debugpy, zum Beispiel:

      python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m mein Projekt

      Damit wird das Paket gestartetMein ProjektverwendenPython3, mit der privaten IP-Adresse des Remote-Computers1.2.3.4und am Hafen lauschen5678(Sie können den Remote-Python-Prozess auch starten, indem Sie einen Dateipfad angeben, anstatt ihn zu verwenden-M, wie zum Beispiel./hello.py).

  4. Lokaler Computer:Nur wenn Sie den Quellcode auf dem Remote-Computer wie oben beschrieben geändert haben, und fügen Sie dann im Quellcode eine auskommentierte Kopie desselben Codes hinzu, der auf dem Remote-Computer hinzugefügt wurde. Durch das Hinzufügen dieser Zeilen wird sichergestellt, dass der Quellcode auf beiden Computern Zeile für Zeile übereinstimmt.

    #import debugpy# Anderen Computern erlauben, sich über diese IP-Adresse und diesen Port mit debugpy zu verbinden.#debugpy.listen(('1.2.3.4', 5678))# Halten Sie das Programm an, bis ein Remote-Debugger angeschlossen ist#debugpy.wait_for_client()
  5. Lokaler Computer: Wechseln Sie zumAusführen und DebuggenSicht (⇧⌘D(Windows, LinuxStrg+Umschalt+D)) in VS Code, wählen Sie die ausPython: AnhängenAufbau

  6. Lokaler Computer: Legen Sie im Code einen Haltepunkt fest, an dem Sie mit dem Debuggen beginnen möchten.

  7. Lokaler Computer: Starten Sie den VS-Code-Debugger mit der geänderten DateiPython: AnhängenKonfiguration und die Schaltfläche Debuggen starten. VS Code sollte an Ihren lokal festgelegten Haltepunkten anhalten, sodass Sie den Code schrittweise durchgehen, Variablen untersuchen und alle anderen Debugging-Aktionen ausführen können. Ausdrücke, die Sie in eingebenDebug-Konsolewerden auch auf dem Remote-Computer ausgeführt.

    Textausgabe nach stdout, abdruckenAnweisungen, erscheint auf beiden Computern. Andere Ausgaben, etwa grafische Darstellungen aus einem Paket wie matplotlib, erscheinen jedoch nur auf dem Remote-Computer.

  8. Während des Remote-Debuggens sieht die Debugging-Symbolleiste wie folgt aus:

    Debuggen von Konfigurationen für Python-Apps in Visual Studio Code (12)

    In dieser Symbolleiste befindet sich die Schaltfläche „Trennen“ (⇧F5(Windows, LinuxUmschalt+F5)) stoppt den Debugger und ermöglicht die vollständige Ausführung des Remote-Programms. Die Neustart-Taste (⇧⌘F5(Windows, LinuxStrg+Umschalt+F5)) startet den Debugger auf dem lokalen Computer neu, tut dies jedochnichtStarten Sie das Remote-Programm neu. Verwenden Sie die Schaltfläche „Neustart“ nur, wenn Sie das Remote-Programm bereits neu gestartet haben und den Debugger erneut anhängen müssen.

Legen Sie Konfigurationsoptionen fest

Beim ersten Erstellenlaunch.jsongibt es zwei Standardkonfigurationen, die die aktive Datei im Editor entweder im integrierten Terminal (innerhalb von VS Code) oder im externen Terminal (außerhalb von VS Code) ausführen:

{ „Konfigurationen“: [{ "Name":„Python: Aktuelle Datei (Integriertes Terminal)“, "Typ":"Python", "Anfrage":"Start", "Programm":„${file}“, "Konsole":„integratedTerminal“},{ "Name":„Python: Aktuelle Datei (externes Terminal)“, "Typ":"Python", "Anfrage":"Start", "Programm":„${file}“, "Konsole":„externalTerminal“}]}

Die spezifischen Einstellungen werden in den folgenden Abschnitten beschrieben. Sie können auch andere Einstellungen hinzufügen, zargs, die nicht in den Standardkonfigurationen enthalten sind.

Spitze: In einem Projekt ist es oft hilfreich, eine Konfiguration zu erstellen, die eine bestimmte Startdatei ausführt. Zum Beispiel, wenn Sie immer starten möchtenStartup.pymit den Argumenten--port 1593Erstellen Sie beim Starten des Debuggers einen Konfigurationseintrag wie folgt:

{ "Name":„Python: Startup.py“, "Typ":"Python", "Anfrage":"Start", "Programm":„${workspaceFolder}/startup.py“, „Argumente“: ["--Hafen",„1593“]},

Name

Stellt den Namen für die Debug-Konfiguration bereit, die in der Dropdown-Liste „VS-Code“ angezeigt wird.

Typ

Identifiziert den Typ des zu verwendenden Debuggers; Lassen Sie dies eingestelltPythonfür Python-Code.

Anfrage

Gibt den Modus an, in dem das Debuggen gestartet werden soll:

  • Start: Starten Sie den Debugger für die in angegebene DateiProgramm
  • anfügen: Hängen Sie den Debugger an einen bereits laufenden Prozess an. SehenRemote-Debuggingzum Beispiel.

Programm

Stellt den vollständig qualifizierten Pfad zum Einstiegsmodul (Startdatei) des Python-Programms bereit. Der Wert${Datei}, häufig in Standardkonfigurationen verwendet, verwendet die aktuell aktive Datei im Editor. Durch die Angabe einer bestimmten Startdatei können Sie sicher sein, dass Ihr Programm immer mit demselben Einstiegspunkt startet, unabhängig davon, welche Dateien geöffnet sind. Zum Beispiel:

"Programm":„/Users/Me/Projects/PokemonGo-Bot/pokemongo_bot/event_handlers/__init__.py“,

Sie können sich auch auf einen relativen Pfad vom Stammverzeichnis des Arbeitsbereichs verlassen. Zum Beispiel, wenn die Wurzel ist/Users/Me/Projects/PokemonGo-BotDann können Sie das folgende Beispiel verwenden:

"Programm":„${workspaceFolder}/pokemongo_bot/event_handlers/__init__.py“,

Modul

Bietet die Möglichkeit, den Namen eines zu debuggenden Moduls anzugeben, ähnlich wie bei-MArgument, wenn es in der Befehlszeile ausgeführt wird. Weitere Informationen finden Sie unterPython.org

Python

Der vollständige Pfad, der auf den Python-Interpreter verweist, der zum Debuggen verwendet werden soll.

Wenn nicht angegeben, wird für diese Einstellung standardmäßig der für Ihren Arbeitsbereich ausgewählte Interpreter verwendet, was der Verwendung des Werts entspricht${command:python.interpreterPath}. Um einen anderen Interpreter zu verwenden, geben Sie stattdessen dessen Pfad im anPythonEigenschaft einer Debug-Konfiguration.

Alternativ können Sie eine benutzerdefinierte Umgebungsvariable verwenden, die auf jeder Plattform definiert wird und den vollständigen Pfad zum zu verwendenden Python-Interpreter enthält, sodass keine anderen Ordnerpfade erforderlich sind.

Wenn Sie Argumente an den Python-Interpreter übergeben müssen, können Sie Folgendes verwendenpythonArgsEigentum.

pythonArgs

Gibt Argumente an, die mithilfe der Syntax an den Python-Interpreter übergeben werden sollen"pythonArgs": ["", "",...].

args

Gibt Argumente an, die an das Python-Programm übergeben werden sollen. Jedes durch ein Leerzeichen getrennte Element der Argumentzeichenfolge sollte in Anführungszeichen stehen, zum Beispiel:

„Argumente“: ["--ruhig",„--norepeat“,"--Hafen",„1593“],

stopOnEntry

Wenn eingestellt aufWAHR, unterbricht den Debugger in der ersten Zeile des zu debuggenden Programms. Wenn weggelassen (Standard) oder auf gesetzt istFALSCH, führt der Debugger das Programm bis zum ersten Haltepunkt aus.

Konsole

Gibt an, wie die Programmausgabe gemäß den Standardeinstellungen angezeigt wirdRedirectOutputwerden nicht verändert.

WertWo die Ausgabe angezeigt wird
„internalConsole“VS Code-Debug-Konsole.WennRedirectOutputauf False gesetzt ist, wird keine Ausgabe angezeigt.
„integratedTerminal“(Standard)Integriertes VS-Code-Terminal. WennRedirectOutputauf True gesetzt ist, wird die Ausgabe auch in der Debug-Konsole angezeigt.
„externalTerminal“Separates Konsolenfenster. WennRedirectOutputauf True gesetzt ist, wird die Ausgabe auch in der Debug-Konsole angezeigt.

Zweck

Es gibt mehr als eine Möglichkeit, das zu konfigurierenLaufenTaste, mit derZweckMöglichkeit. Einstellung der Option aufDebug-Test, definiert, dass die Konfiguration beim Debuggen von Tests in VS Code verwendet werden soll. Allerdings wird die Option auf gesetztDebug-im-Terminal, legt fest, dass die Konfiguration nur beim Zugriff auf verwendet werden sollFühren Sie die Python-Datei ausSchaltfläche oben rechts im Editor (unabhängig davon, ob dieFühren Sie die Python-Datei ausoderPython-Datei debuggenwelche Optionen die Schaltfläche bietet, wird verwendet).Notiz: DerZweckDie Option kann nicht zum Starten des Debuggers verwendet werdenF5oderAusführen > Debuggen starten.

AutoReload

Ermöglicht das automatische Neuladen des Debuggers, wenn Änderungen am Code vorgenommen werden, nachdem die Debugger-Ausführung einen Haltepunkt erreicht hat. Um diesen Funktionssatz zu aktivieren{"enable": true}wie im folgenden Code gezeigt.

{ "Name":„Python: Aktuelle Datei“, "Typ":"Python", "Anfrage":"Start", "Programm":„${file}“, "Konsole":„integratedTerminal“, „AutoReload“: { "ermöglichen":WAHR}}

*Notiz: Wenn der Debugger einen Neuladevorgang durchführt, wird Code, der beim Import ausgeführt wird, möglicherweise erneut ausgeführt. Um diese Situation zu vermeiden, versuchen Sie, in Ihrem Modul nur Importe, Konstanten und Definitionen zu verwenden und den gesamten Code in Funktionen zu platzieren. Alternativ können Sie auch verwendenif __name__=="__main__"Schecks.

Unterprozess

Gibt an, ob das Debuggen von Unterprozessen aktiviert werden soll. Standardmäßig istFALSCH, einstellenWAHRermöglichen. Weitere Informationen finden Sie unterDebuggen mit mehreren Zielen.

cwd

Gibt das aktuelle Arbeitsverzeichnis für den Debugger an, das den Basisordner für alle im Code verwendeten relativen Pfade darstellt. Wenn es weggelassen wird, wird standardmäßig verwendet${workspaceFolder}(Der in VS Code geöffnete Ordner).

Als Beispiel sagen wir${workspaceFolder}enthält einpy_codeOrdner mitapp.py, und einDatenOrdner mitGehälter.csv. Wenn Sie den Debugger startenpy_code/app.py, dann variieren die relativen Pfade zur Datendatei je nach Wert voncwd:

cwdRelativer Pfad zur Datendatei
Weggelassen bzw${workspaceFolder}data/salaries.csv
${workspaceFolder}/py_code../data/salaries.csv
${workspaceFolder}/dataGehälter.csv

RedirectOutput

Wenn eingestellt aufWAHR(die Standardeinstellung für internalConsole) bewirkt, dass der Debugger alle Ausgaben des Programms im Debug-Ausgabefenster von VS Code druckt. Wenn eingestellt aufFALSCH(Standardeinstellung für IntegratedTerminal und ExternalTerminal) wird die Programmausgabe nicht im Debugger-Ausgabefenster angezeigt.

Diese Option ist bei Verwendung normalerweise deaktiviert„console“: „integratedTerminal“oder„console“: „externalTerminal“weil es nicht nötig ist, die Ausgabe in der Debug-Konsole zu duplizieren.

justMyCode

Wenn weggelassen oder auf gesetztWAHR(Standardeinstellung) beschränkt das Debuggen nur auf vom Benutzer geschriebenen Code. EinstellenFALSCHum auch das Debuggen von Standardbibliotheksfunktionen zu ermöglichen.

Django

Wenn eingestellt aufWAHR, aktiviert Debugging-Funktionen, die speziell für das Django-Webframework gelten.

Sudo

Wenn eingestellt aufWAHRund verwendet mit„console“: „externalTerminal“ermöglicht das Debuggen von Apps, die eine Erhöhung erfordern. Um das Passwort zu erfassen, ist die Verwendung einer externen Konsole erforderlich.

Pyramide

Wenn eingestellt aufWAHRstellt sicher, dass eine Pyramid-App mit gestartet wirddas NötigebewahrenBefehl.

env

Legt optionale Umgebungsvariablen für den Debugger-Prozess fest, die über die Systemumgebungsvariablen hinausgehen, die der Debugger immer erbt. Die Werte für diese Variablen müssen als Zeichenfolgen eingegeben werden.

envFile

Optionaler Pfad zu einer Datei, die Umgebungsvariablendefinitionen enthält. SehenKonfigurieren von Python-Umgebungen – Definitionsdatei für Umgebungsvariablen.

entlüften

Wenn eingestellt aufWAHR, ermöglicht das Debuggen vonGevent Monkey-gepatchter Code.

Jinja

Wenn eingestellt aufWAHR, aktiviert spezifische Debugging-Funktionen fürJinjaTemplate-Framework.

Haltepunkte und Protokollpunkte

Die Python-Erweiterung unterstütztHaltepunkteUndLogpointszum Debuggen von Code. Eine kurze Anleitung zum grundlegenden Debuggen und Verwenden von Haltepunkten finden Sie unterTutorial – Konfigurieren Sie den Debugger und führen Sie ihn aus.

Bedingte Haltepunkte

Haltepunkte können auch so eingestellt werden, dass sie basierend auf Ausdrücken, Trefferzahlen oder einer Kombination aus beidem ausgelöst werden. Die Python-Erweiterung unterstützt Trefferzahlen, die Ganzzahlen sind, zusätzlich zu Ganzzahlen, denen die Operatoren ==, >, >=, <, <= und % vorangestellt sind. Sie könnten beispielsweise einen Haltepunkt festlegen, der nach fünf Vorkommen ausgelöst wird, indem Sie eine Trefferanzahl von festlegen>5Weitere Informationen finden Sie unterbedingte Haltepunkteim Hauptartikel zum Debuggen von VS-Code.

Aufrufen eines Haltepunkts im Code

In Ihrem Python-Code können Sie aufrufendebugpy.breakpoint()an jedem Punkt, an dem Sie den Debugger während einer Debugging-Sitzung anhalten möchten.

Haltepunktvalidierung

Die Python-Erweiterung erkennt automatisch Haltepunkte, die auf nicht ausführbaren Zeilen gesetzt sind, zpassierenAnweisungen oder die Mitte einer mehrzeiligen Anweisung. In solchen Fällen verschiebt die Ausführung des Debuggers den Haltepunkt auf die nächste gültige Zeile, um sicherzustellen, dass die Codeausführung an diesem Punkt stoppt.

Debuggen bestimmter App-Typen

Das Konfigurations-Dropdown bietet verschiedene Optionen für allgemeine App-Typen:

AufbauBeschreibung
AnfügenSehenRemote-Debuggingim vorherigen Abschnitt.
DjangoGibt an„program“: „${workspaceFolder}/manage.py“,„args“: [„runserver“]. Fügt auch hinzu„django“: wahrum das Debuggen von Django-HTML-Vorlagen zu ermöglichen.
FlascheSehenFlask-Debuggingunter.
EntlüftenFügt hinzu„geben“: wahrzur standardmäßig integrierten Terminalkonfiguration.
PyramideEntferntProgramm, fügt hinzu„args“: [“${workspaceFolder}/development.ini“], fügt hinzu„jinja“: wahrzum Aktivieren des Vorlagen-Debuggens und fügt hinzu„Pyramide“: wahrum sicherzustellen, dass das Programm mit gestartet wirddas NötigebewahrenBefehl.

Auch für das Remote-Debugging und die Google App Engine sind spezifische Schritte erforderlich. Einzelheiten zu Debugging-Tests finden Sie unterTesten.

Um eine App zu debuggen, die Administratorrechte erfordert, verwenden Sie„console“: „externalTerminal“Und„sudo“: „Wahr“.

Flask-Debugging

{ "Name":„Python: Flasche“, "Typ":"Python", "Anfrage":"Start", "Modul":"Flasche", „env“: { „FLASK_APP“:„app.py“}, „Argumente“: [ "laufen", „--no-debugger“], „Jinja“:WAHR},

Wie Sie sehen können, gibt diese Konfiguration an„env“: {“FLASK_APP“: „app.py“}Und„args“: [„run“, „--no-debugger“]. Der„Modul“: „Flasche“Eigenschaft wird anstelle von verwendetProgramm. (Sie können sehen„FLASK_APP“: „${workspaceFolder}/app.py“imenv-Eigenschaft ändern. In diesem Fall ändern Sie die Konfiguration so, dass sie sich nur auf den Dateinamen bezieht. Andernfalls wird möglicherweise die Fehlermeldung „Modul C kann nicht importiert werden“ angezeigt, wenn C ein Laufwerksbuchstabe ist.)

Der„jinja“: wahrDie Einstellung ermöglicht auch das Debuggen für Flasks standardmäßige Jinja-Templating-Engine.

Wenn Sie den Entwicklungsserver von Flask im Entwicklungsmodus ausführen möchten, verwenden Sie die folgende Konfiguration:

{ "Name":„Python: Flask (Entwicklungsmodus)“, "Typ":"Python", "Anfrage":"Start", "Modul":"Flasche", „env“: { „FLASK_APP“:„app.py“, „FLASK_ENV“:"Entwicklung"}, „Argumente“: [ "laufen"], „Jinja“:WAHR},

Fehlerbehebung

Es gibt viele Gründe, warum der Debugger möglicherweise nicht funktioniert. Manchmal zeigt die Debug-Konsole bestimmte Ursachen an, die Hauptgründe sind jedoch folgende:

  • Der Pfad zur ausführbaren Python-Datei ist falsch: Überprüfen Sie den Pfad Ihres ausgewählten Interpreters, indem Sie Folgendes ausführenPython: Wählen Sie Interpreter ausBefehl ausführen und den aktuellen Wert betrachten:

    Debuggen von Konfigurationen für Python-Apps in Visual Studio Code (13)

  • Es gibt ungültige Ausdrücke im Überwachungsfenster: Löschen Sie alle Ausdrücke aus dem Überwachungsfenster und starten Sie den Debugger neu.

  • Wenn Sie mit einer Multithread-App arbeiten, die native Thread-APIs verwendet (z. B. Win32Erstelle einen ThreadFunktion anstelle der Python-Threading-APIs), ist es derzeit erforderlich, den folgenden Quellcode oben in die Datei einzufügen, die Sie debuggen möchten:

    importierendebugpydebugpy.debug_this_thread()
  • Wenn Sie mit einem arbeitenLinuxWenn Sie versuchen, einen Debugger auf einen laufenden Prozess anzuwenden, erhalten Sie möglicherweise die Fehlermeldung „Zeitüberschreitung“. Um dies zu verhindern, können Sie vorübergehend den folgenden Befehl ausführen:

    Echo0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

Nächste Schritte

  • Python-Umgebungen- Steuern Sie, welcher Python-Interpreter zum Bearbeiten und Debuggen verwendet wird.
  • Testen- Testumgebungen konfigurieren und Tests erkennen, ausführen und debuggen.
  • Referenz zu den Einstellungen- Entdecken Sie die gesamte Palette der Python-bezogenen Einstellungen in VS Code.
  • Allgemeines Debuggen- Erfahren Sie mehr über die Debugging-Funktionen von VS Code.

19.01.2023

Top Articles
Latest Posts
Article information

Author: Catherine Tremblay

Last Updated: 05/20/2023

Views: 5239

Rating: 4.7 / 5 (47 voted)

Reviews: 86% of readers found this page helpful

Author information

Name: Catherine Tremblay

Birthday: 1999-09-23

Address: Suite 461 73643 Sherril Loaf, Dickinsonland, AZ 47941-2379

Phone: +2678139151039

Job: International Administration Supervisor

Hobby: Dowsing, Snowboarding, Rowing, Beekeeping, Calligraphy, Shooting, Air sports

Introduction: My name is Catherine Tremblay, I am a precious, perfect, tasty, enthusiastic, inexpensive, vast, kind person who loves writing and wants to share my knowledge and understanding with you.