Python breakpoint()

Il breakpoint di Python () è una nuova funzione integrata introdotta in Python 3.7. Il debug del codice Python è sempre stato un processo doloroso a causa dell’accoppiamento stretto tra il codice effettivo e il codice del modulo di debug. Ad esempio, se si utilizza il debugger pdb, allora sarà necessario chiamare pdb.set_trace() nel codice del programma. Se si desidera utilizzare un altro debugger, ad esempio web-pdb, sarà necessario rimuovere tutto il codice relativo a PDB e aggiungere il metodo web_pdb.set_trace(). Ciò comporta un enorme overhead nell’utilizzo del debugger Python e rende il codice Python difficile da debuggare e mantenere. Ecco perché Python 3.7 ha introdotto il metodo breakpoint() che ci consente di scrivere codice di debug poco accoppiato.

Il breakpoint di Python ()

La funzione breakpoint() di Python chiama la funzione sys.breakpointhook(). Per impostazione predefinita, sys.breakpointhook() chiama la funzione pdb.set_trace(). Quindi, almeno usando breakpoint() forniamo comodità nell’utilizzo di un debugger perché non dobbiamo importare esplicitamente il modulo pdb. Vediamo un semplice esempio di utilizzo della funzione breakpoint(). Abbiamo uno script Python python_breakpoint_examples.py con il seguente codice.

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

breakpoint()

print(z)

Quando eseguiamo questo script, si apre la console del debugger PDB.

$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() – Interrompere il debug

La funzione sys.breakpointhook() di Python utilizza la variabile di ambiente PYTHONBREAKPOINT per configurare il debugger. Se non è impostata, viene utilizzato il debugger predefinito PDB. Se è impostata su “0”, la funzione restituisce immediatamente e non viene eseguito alcun debug del codice. È molto utile quando vogliamo eseguire il nostro codice senza debug.

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

Python breakpoint() – Modificare il modulo del debugger

Possiamo utilizzare la variabile di ambiente PYTHONBREAKPOINT per fornire il metodo del debugger da chiamare dalla funzione breakpoint(). Questo è molto utile perché possiamo cambiare facilmente il modulo del debugger senza apportare alcuna modifica al codice. Supponiamo di voler utilizzare il debugger web-pdb. Possiamo facilmente collegarlo al nostro programma utilizzando PYTHONBREAKPOINT=web_pdb.set_trace. Prima di tutto, assicurati che web-pdb sia installato. Puoi installarlo usando il comando pip3.7 install web-pdb.

Secondo la documentazione di web-pdb, è compatibile con la nuova funzione breakpoint() aggiunta 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...

Apri l’URL del server web fornito nel registro console e vedrai la finestra del debugger come nell’immagine sottostante. Possiamo emettere comandi PDB utilizzando questa interfaccia, puoi inviare il comando “c” per continuare e completare il nostro programma.

Riepilogo

La funzione di interruzione del Python breakpoint() è un’aggiunta molto utile alla funzione di debug di Python. Si consiglia di utilizzarla per il debug in modo che tu possa facilmente collegare altri debuggers di terze parti al volo. Fornisce anche un’opzione facile per disabilitare il debugger ed eseguire normalmente il programma.

Puoi trovare ulteriori esempi di Python nel nostro Repository GitHub.

Riferimento: Documentazione Ufficiale

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