Python breakpoint() ist eine neue eingebaute Funktion, die in Python 3.7 eingeführt wurde. Das Debuggen von Python-Code war immer ein schmerzhafter Prozess aufgrund der engen Kopplung zwischen dem tatsächlichen Code und dem Code des Debugging-Moduls. Wenn Sie beispielsweise den pdb-Debugger verwenden, müssen Sie in Ihrem Programmcode pdb.set_trace() aufrufen. Wenn Sie einen anderen Debugger verwenden möchten, sagen wir web-pdb, müssen Sie den gesamten Code im Zusammenhang mit PDB entfernen und die Methode web_pdb.set_trace() hinzufügen. Dies führt zu einem großen Overhead bei der Verwendung des Python-Debuggers und macht den Python-Code schwer zu debuggen und zu warten. Aus diesem Grund wurde in Python 3.7 die Methode breakpoint() eingeführt, die es uns ermöglicht, lose gekoppelten Debugging-Code zu schreiben.
Python breakpoint()
Die Funktion breakpoint() in Python ruft die Funktion sys.breakpointhook() auf. Standardmäßig ruft sys.breakpointhook() die Funktion pdb.set_trace() auf. Daher bietet die Verwendung von breakpoint() zumindest den Vorteil, dass ein Debugger bequem verwendet werden kann, da wir das pdb-Modul nicht explizit importieren müssen. Schauen wir uns ein einfaches Beispiel für die Verwendung der Funktion breakpoint() an. Wir haben ein Python-Skript python_breakpoint_examples.py mit dem folgenden Code.
x = 10
y = 'Hi'
z = 'Hello'
print(y)
breakpoint()
print(z)
Wenn wir dieses Skript ausführen, öffnet sich die PDB-Debugger-Konsole.
$python3.7 python_breakpoint_examples.py
Hi
> /Users/pankaj/Documents/PycharmProjects/BasicPython/basic_examples/python_breakpoint_examples.py(8)()
-> print(z)
(Pdb) c
Hello
$
Python-Brechpunkt() – Debuggen anhalten
Die Funktion sys.breakpointhook() in Python verwendet die Umgebungsvariable PYTHONBREAKPOINT, um den Debugger zu konfigurieren. Wenn sie nicht gesetzt ist, wird der Standard-PDB-Debugger verwendet. Wenn sie auf „0“ gesetzt ist, gibt die Funktion sofort zurück und es wird kein Code-Debugging durchgeführt. Dies ist sehr hilfreich, wenn wir unseren Code ohne Debugging ausführen möchten.
$PYTHONBREAKPOINT=0 python3.7 python_breakpoint_examples.py
Hi
Hello
$
Python-Brechpunkt() – Debugger-Modul ändern
Mit der Umgebungsvariable PYTHONBREAKPOINT können wir die Debugger-Methode festlegen, die von der Funktion breakpoint() aufgerufen werden soll. Dies ist sehr nützlich, da wir das Debugger-Modul einfach ändern können, ohne den Code anzupassen. Angenommen, wir möchten den Debugger „web-pdb“ verwenden. Wir können ihn leicht in unser Programm integrieren, indem wir PYTHONBREAKPOINT=web_pdb.set_trace setzen. Stellen Sie zunächst sicher, dass web-pdb installiert ist. Sie können es mit dem Befehl „pip3.7 install web-pdb“ installieren.
Gemäß der Dokumentation von web-pdb ist es mit der in Python 3.7 hinzugefügten Funktion breakpoint() kompatibel.
$PYTHONBREAKPOINT=web_pdb.set_trace python3.7 python_breakpoint_examples.py
Hi
2018-08-10 12:49:54,339: root - web_console:110 - CRITICAL - Web-PDB: starting web-server on pankaj:5555...
Öffnen Sie die in der Konsolenausgabe angegebene URL des Webservers, und Sie sehen das Debugger-Fenster wie im folgenden Bild.
Über diese Benutzeroberfläche können wir PDB-Befehle ausführen. Sie können den Befehl „c“ senden, um fortzufahren und unser Programm abzuschließen.
Zusammenfassung
Die Python breakpoint() Funktion ist eine sehr nützliche Ergänzung der Python-Debugging-Funktion. Es wird empfohlen, diese zum Debuggen zu verwenden, damit Sie problemlos andere Debugger von Drittanbietern verwenden können. Es bietet auch eine einfache Option, den Debugger zu deaktivieren und das Programm normal auszuführen.
Sie können weitere Python-Beispiele aus unserem GitHub-Repository überprüfen.
Referenz: Offizielle Dokumentation
Source:
https://www.digitalocean.com/community/tutorials/python-breakpoint