Esegui il debug di Python come un eroe con queste librerie e strumenti

Vuoi essere un vero esperto di debug di Python? Esegui il debug del tuo codice Python utilizzando questi straordinari strumenti e librerie di debug Python che tratteremo presto!

Python è un linguaggio di programmazione generico, di alto livello e orientato agli oggetti utilizzato per molti scopi di sviluppo. Inoltre, è uno strumento di sviluppo efficace per diverse applicazioni, dallo sviluppo di applicazioni web al web scraping e ad applicazioni più complesse come Machine learning e Data Science.

Durante lo sviluppo, è probabile che si verifichino errori chiamati bug nella programmazione. Gli sviluppatori adottano diversi passaggi per rilevare ed eliminare i bug esistenti e potenziali dal codice. Di conseguenza, si impedisce che il codice del programma venga schiacciato. Chiamiamo questo processo debugging.

Questo articolo esaminerà diversi debugger Python disponibili che puoi utilizzare. Vedremo anche quanto sono diversi questi debugger l’uno dall’altro e cosa rende efficace la loro implementazione.

Libreria di debug cProfiler

c Profiler, è una libreria popolare e un’estensione C che esegue la profilatura del codice di lunga durata. A lungo termine, identifica le sezioni del codice del programma che richiedono molto tempo per essere eseguite. Sebbene identifichi il tempo preciso impiegato per eseguire diverse sezioni del codice, non identifica completamente né corregge i bug nel codice.

Pertanto, sorge la necessità di utilizzare altri debugger.

Fortunatamente, puoi utilizzare librerie consigliate come ipdb, Django-debug-toolbar, pyelftools, viztracer e py-spy come strumenti di debug per il tuo codice Python.

Lo strumento di debug ipdb

Il debugger Python abilitato per IPython per intero è un debugger interattivo di terze parti che contiene pdbfunzionalità di. Ipbd inoltre viene fornito con il supporto IPython della shell interattiva. Tale supporto include il completamento delle schede, il supporto del colore e le funzioni magiche, tra le altre funzionalità di supporto.

Questo debugger consente l’accesso al debugger IPython esportando le funzioni rilevanti. Offre anche un’interfaccia simile per una migliore introspezione, proprio come nel modulo pdb.

Debug con Ipdb

La libreria richiede l’installazione utilizzando il comando pip di seguito.

pip install ipdb

Un esempio di utilizzo di ipdb sarebbe simile a questo:

import ipdb
alpha_list = ['a', 'b', 'c']
fruit_list = ['orange', 'mango', 'kiwi']

def nested_loop():
    for fruit_list:
        print (fruit)
        ipdb.set_trace()
    for x in alpha_list:
        print(x)
if __name__ == '__main__':
    nested_loop()

Esegui il file python usando il comando seguente dove test.py è il nome del mio file:

python -m ipdb test.py

L’importazione ipdb e l’esecuzione della funzione ipdb.set_trace() consente l’inizio del programma ed esegue il debugger durante l’esecuzione.

La funzione ipdb.pm()(post mortem) agisce in modo simile alla funzione %debug magic.

set_trace argomenti

Passa il contesto come argomento a set_trace per mostrare diverse righe di codice definite. Inoltre, cond, che set_trace accetta anche come argomento, accetta valori booleani e avvia l’interfaccia ipdb quando si imposta cond su true.

Utilizzo del file di configurazione

Impostare l’argomento di contesto con un file idpdb o il file setup.cfg disponibile rispettivamente nella cartella home e nella cartella del progetto. Puoi controllare ulteriormente la funzionalità di ipdb.

Barra degli strumenti di debug di Django

Il Barra degli strumenti di debug di Django è un popolare strumento di debug in Django: un framework Python.

Questo set configurabile di pannelli visualizza le informazioni di debug di una richiesta o risposta corrente. Quando si fa clic sulla barra degli strumenti, vengono visualizzati ulteriori dettagli sui contenuti del pannello.

Questo strumento ispeziona a fondo l’ambiente di sviluppo di Django.

Seguire il processo di installazione e le istruzioni di configurazione qui.

Libreria Pyelftools

Il pyelftools la libreria è basata esclusivamente su Python. Analizza e analizza i file ELF e le informazioni di debug DWARF e richiede solo l’esecuzione di Python.

L’uso di Pyelftools è facile poiché non ha librerie esterne. Inoltre, l’utilizzo di pyelftools senza installazione è piuttosto semplice poiché richiede semplicemente la regolazione di PYTHONPATH nelle variabili di ambiente.

Lo installerai usando:

pip install pyelftools 

L’implementazione di pyelftools richiede semplicemente di importarlo e richiamarlo nel programma.

Lo strumento di debug del gelato 🍦

Questo è un altro strumento di debug efficiente per gli sviluppatori Python.

Usando gelatoanche ic(), ha molti vantaggi rispetto a print(), come descritto di seguito:

  • Digitarlo è relativamente più veloce, letteralmente.
  • Stampa le strutture di dati abbastanza bene.
  • Stampa espressioni o nomi di variabili e relativi valori con ic().
  • Evidenzia la sintassi dell’output.
  • Facoltativamente, include il contesto del programma, inclusi il nome del file, il numero di riga e la funzione padre.

Prima di utilizzare questo pacchetto, installarlo utilizzando il comando pip di seguito:

pip install icecream

La cosa buona è che puoi usufruire di ic() in tutti i file senza necessariamente importarlo in tutti i file installandolo usando install(). Inoltre, install() aggiunge ic() al modulo builtins. Tutti i file importati dall’interprete condivideranno ic().

Nel tuo primo file python di root, che puoi nominare x.py, aggiungi ic() usando install().

from icecream import install
install()
from y import mult
mult()
 

In y.py fil il file x.py sta importando, chiama ic()

def mult():
    z=8
    ic(z)

Risultati:

y
ic| z : 8

Ciò che rende ic() più efficiente è la sua capacità di ispezionare le variabili passate, incluso se stesso, quindi stampare i suoi argomenti e i valori degli argomenti come nell’esempio seguente.

from icecream import ic
def mult(x):
    return x * 4
ic(mult(100))

Produzione:

ic| mult(100): 400

Inoltre, puoi inserire ic() nel codice preesistente poiché restituisce i suoi argomenti. L’esempio seguente restituisce ic| x: 12, quindi ic| y: 48.

from icecream import ic
x = 12
def mult(x):
    return x*4
    y = mult(ic(x))
    ic(y)

Debug usando lo strumento py-spy

Puoi usare pi-spia per profilare campioni per programmi Python come strumento di debug. Senza riavviare il programma o modificarne il codice, py-spy visualizza l’esecuzione del programma Python. Inoltre, poiché è scritto in Rust, ha un basso sovraccarico.

Inoltre, vale la pena considerare che l’uso di py-spy contro il codice Python di produzione è sicuro perché esegue un processo diverso dal programma Python profilato.

Come ogni altro strumento precedente che abbiamo visto, puoi usare lo strumento py-spy dopo averlo installato.

pip install py-spy 

Nonostante il tuo programma Python serva il traffico di produzione, puoi comunque profilare ed eseguire il debug di questo programma usando py-spy, rendendolo uno strumento critico per il profiler Python.

Debug Viztracer

In alternativa, puoi usare viztracer, uno strumento di debug, per tracciare e visualizzare l’esecuzione del tuo programma Python. È anche uno strumento di profilazione con registrazione a basso sovraccarico.

Ciò che rende visualizzatore uno strumento di debug efficace?

  • Usarlo è abbastanza semplice e non dipende dai pacchetti esterni per funzionare.
  • Viztracer funziona su tutte le piattaforme del sistema operativo: Windows, Linux o macOS.
  • Il suo potente front-end esegue il rendering uniforme della traccia a livello di GB.
  • Usa RegEx per registrare funzioni arbitrarie e informazioni extra come variabili e attributi, Eccezioni sollevate, Operazioni di raccolta dei rifiutiecc., senza modificare alcuna sezione di codice all’interno del codice sorgente.
  • Ciò che rende viztracer uno strumento di debug a basso costo è la sua capacità di filtrare i dati non necessari nel programma. Quindi conserva le vecchie informazioni prima di eseguire il dump del registro in formato JSON.
  • Puoi usarlo per inserire eventi personalizzati come il evento istantaneoil evento variabilee il Evento di durata durante l’esecuzione del programma. In questo modo, funziona come un debug di stampa, tranne che viztracer ti consente di sapere quando si verifica la stampa mentre traccia i dati.

Conclusione

La profilazione e il debug di Python, proprio come la profilazione del software, sono un passaggio chiave in uno sviluppo che richiede attenzione. Questo passaggio consente di escludere eventuali sezioni di codice con bug in modo da ottimizzare le prestazioni complessive del codice.

Gli strumenti di debug che abbiamo trattato sopra sono strumenti efficienti che semplificano il lavoro di uno sviluppatore Python.

Vedendo che gli altri strumenti di debug funzionano in modo più efficace rispetto a cProfiler, puoi, come un vero eroe, eseguire il debug del tuo codice Python e correggere eventuali bug utilizzando questi debugger per impedire l’esecuzione del codice senza arresti anomali.

Buon debug!