Python onderbreking()

De Python breakpoint() is een nieuwe ingebouwde functie geïntroduceerd in Python 3.7. Het debuggen van Python-code is altijd een pijnlijk proces geweest vanwege de nauwe koppeling tussen de daadwerkelijke code en de debugmodulecode. Als je bijvoorbeeld de pdb-debugger gebruikt, moet je pdb.set_trace() aanroepen in je programmabestand. Als je een andere debugger wilt gebruiken, laten we zeggen web-pdb, dan moet je alle code gerelateerd aan PDB verwijderen en de web_pdb.set_trace()-methode toevoegen. Dit zorgt voor een enorme overhead bij het gebruik van de Python-debugger en maakt de Python-code moeilijk te debuggen en te onderhouden. Daarom heeft Python 3.7 de breakpoint()-methode geïntroduceerd die ons in staat stelt losjes gekoppelde debugcode te schrijven.

Python breakpoint()

De Python breakpoint() functie roept de sys.breakpointhook() functie aan. Standaard roept sys.breakpointhook() de functie pdb.set_trace() aan. Dus op zijn minst biedt het gebruik van breakpoint() handigheid bij het gebruik van een debugger omdat we niet expliciet de pdb-module hoeven te importeren. Laten we eens kijken naar een eenvoudig voorbeeld van het gebruik van de breakpoint() functie. We hebben een Python-script python_breakpoint_examples.py met de volgende code.

x = 10
y = 'Hi'
z = 'Hello'
print(y)

breakpoint()

print(z)

Wanneer we dit script uitvoeren, opent de PDB-debuggerconsole.

$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 breakpoint() – Stop Debugging

De Python-functie sys.breakpointhook() gebruikt de omgevingsvariabele PYTHONBREAKPOINT om de debugger te configureren. Als deze niet is ingesteld, wordt de standaard PDB-debugger gebruikt. Als deze is ingesteld op “0”, dan wordt de functie onmiddellijk geretourneerd en wordt er geen code debugging uitgevoerd. Dit is zeer nuttig wanneer we onze code willen uitvoeren zonder debugging.

$PYTHONBREAKPOINT=0 python3.7 python_breakpoint_examples.py
Hi
Hello
$

Python breakpoint() – Debugger Module Wijzigen

We kunnen de omgevingsvariabele PYTHONBREAKPOINT gebruiken om de debuggermethode te verstrekken die moet worden aangeroepen door de breakpoint() functie. Dit is zeer nuttig omdat we de debuggermodule gemakkelijk kunnen wijzigen zonder enige code aanpassing. Laten we zeggen dat we de web-pdb debugger willen gebruiken. We kunnen deze eenvoudig in ons programma haken door PYTHONBREAKPOINT=web_pdb.set_trace te gebruiken. Zorg er eerst voor dat web-pdb is geïnstalleerd. U kunt het installeren met het pip3.7 install web-pdb commando.

Volgens de web-pdb documentatie is het compatibel met de nieuwe breakpoint() functie toegevoegd in Python 3.7.

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

Open de webserver-URL die in de console-log wordt verstrekt en je zult het debugscherm zien zoals op de onderstaande afbeelding. We kunnen PDB-opdrachten uitvoeren met behulp van deze UI, je kunt de opdracht “c” verzenden om door te gaan en ons programma te voltooien.

Samenvatting

De Python breakpoint() functie is een zeer nuttige toevoeging aan de python-debuggingfunctie. Het wordt aanbevolen om dit te gebruiken voor debugging, zodat je gemakkelijk andere externe debuggers kunt aansluiten terwijl je bezig bent. Het biedt ook een eenvoudige optie om de debugger uit te schakelen en het programma normaal uit te voeren.

Je kunt meer Python-voorbeelden bekijken in onze GitHub-opslagplaats.

Referentie: Officiële documentatie

Source:
https://www.digitalocean.com/community/tutorials/python-breakpoint