Python:
Utilizzo di un debugger

Come fare:

Vediamo come utilizzare pdb, il debugger integrato di Python. Immagina un file, buggy.py, con un bug subdolo:

def add_one(number):
    result = number ++ 1
    return result

print(add_one(7))

Eseguendo questo script, ti aspetti 8, ma genera solo un errore di sintassi. È il momento del debugger!

Nel tuo terminale, esegui:

python -m pdb buggy.py

Entrerai nel debugger, e apparirà così:

> /percorso_del_file/buggy.py(1)<module>()
-> def add_one(number):

Usa l(ist) per vedere più codice, n(ext) per passare alla prossima riga, o c(ontinue) per continuare l’esecuzione dello script. Quando incontri l’errore, pdb si fermerà e ti permetterà di ispezionare.

Dopo aver corretto number ++ 1 in number + 1, riavvia il debugger per testare la correzione. Ricorda, gli amici non lasciano programmare gli amici senza una rete. Detto questo, basta.

Approfondimento

Nell’Età Oscura della programmazione (alias prima che gli ambienti di sviluppo integrati, o IDE, fossero diffusi ovunque), i debugger erano spesso strumenti autonomi che si utilizzavano al di fuori dell’editor di testo. Venivano in soccorso permettendo ai programmatori di ispezionare lo stato del loro software in vari punti di esecuzione.

Allo stato attuale, nel 2023, il pdb di Python non è l’unico strumento disponibile. Le persone potrebbero usare IDE come PyCharm o Visual Studio Code, che hanno i loro debugger integrati e sofisticati. Questi aggiungono funzionalità utili come i breakpoint che si possono impostare con un clic, anziché digitare comandi criptici.

Poi c’è ipdb, un pacchetto installabile tramite pip che porta la bontà di IPython nel debugging. È come pdb sotto steroidi, con completamento automatico delle tabulazioni e evidenziazione della sintassi.

I debugger variano anche nella loro implementazione. Alcuni entrano a fondo nel dettaglio dell’esecuzione del programma a livello di macchina o di byte code. Altri, come molti debugger di linguaggi ad alto livello, eseguono il codice in un ambiente speciale che monitora lo stato delle variabili e controlla il flusso di esecuzione.

Vedi Anche

Per il quadro completo sul debugger di Python, consulta:

Se sei curioso delle alternative, questi link ti saranno utili:

Buona caccia ai bug!