Python breakpoint() Funktion
Python breakpoint() ist eine neue eingebaute Funktion, die in Python 3.7 eingeführt wurde. Das Debugging von Python-Code war immer ein schmerzhafter Prozess wegen der engen Kopplung zwischen dem eigentlichen Code und dem Debugging-Modulcode. 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, dann müssen Sie allen Code, der mit PDB zusammenhängt, entfernen und die Methode web_pdb.set_trace() hinzufügen. Dies verursacht einen großen Mehraufwand bei der Verwendung des Python-Debuggers und macht den Python-Code schwer zu debuggen und zu warten. Deshalb hat Python 3.7 die breakpoint()-Methode eingeführt, die es uns ermöglicht, locker gekoppelten Debugging-Code zu schreiben.
Wie funktioniert Python breakpoint()
Die Python breakpoint() Funktion ruft die Funktion sys.breakpointhook() auf. Standardmäßig ruft sys.breakpointhook() die Funktion pdb.set_trace() auf. Mindestens bietet die Verwendung von breakpoint() Bequemlichkeit bei der Verwendung eines Debuggers, da wir das pdb-Modul nicht explizit importieren müssen. Lassen Sie uns ein einfaches Beispiel für die Verwendung der breakpoint() Funktion anschauen. 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
$
Debugging stoppen mit Python breakpoint()
Die Python sys.breakpointhook() Funktion 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, kehrt 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
$
Debugger-Modul ändern mit Python breakpoint()
Wir können die Umgebungsvariable PYTHONBREAKPOINT verwenden, um die Debugging-Methode anzugeben, die von der breakpoint()-Funktion aufgerufen werden soll. Dies ist sehr hilfreich, da wir das Debugger-Modul leicht ändern können, ohne den Code zu ändern. Angenommen, wir möchten den Web-pdb-Debugger verwenden. Wir können ihn einfach in unser Programm einbinden, indem wir PYTHONBREAKPOINT=web_pdb.set_trace verwenden. Zuerst stellen Sie sicher, dass Web-pdb installiert ist. Sie können es mit dem Befehl pip3.7 install web-pdb installieren.
$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 im Konsolenprotokoll angegebene Web-Server-URL und Sie sehen das Debugger-Fenster. Wir können PDB-Befehle über diese Benutzeroberfläche ausgeben, Sie können den Befehl „c“ senden, um fortzufahren und unser Programm abzuschließen.
Zusammenfassung
Die Python breakpoint()-Funktion ist eine sehr hilfreiche Ergänzung der Python-Debugging-Funktionen. Es wird empfohlen, diese für das Debugging zu verwenden, sodass Sie problemlos andere Debugger von Drittanbietern einbinden können. Es bietet auch eine einfache Option, den Debugger zu deaktivieren und das Programm normal auszuführen.