Voulez-vous être un véritable expert du débogage Python ? Déboguez votre code Python à l'aide de ces incroyables outils et bibliothèques de débogage Python que nous aborderons bientôt !

Python est un langage de programmation polyvalent, de haut niveau et orienté objet utilisé à de nombreuses fins de développement. De plus, c'est un outil de développement efficace pour différentes applications, du développement d'applications Web à grattage web et des applications plus complexes comme l'apprentissage automatique et la science des données.

Au cours du développement, des erreurs appelées bogues dans la programmation sont susceptibles de se produire. Les développeurs prennent plusieurs mesures pour détecter et éliminer les bogues existants et potentiels du code. En conséquence, vous empêchez le code du programme d'être écrasé. Nous appelons ce processus le débogage.

Cet article examinera plusieurs débogueurs Python disponibles que vous pouvez utiliser. Nous verrons également à quel point ces débogueurs sont les uns des autres et ce qui rend leur mise en œuvre efficace.

cProfiler debugging library

cProfiler, est une bibliothèque populaire et une extension C qui exécute le profilage du code de longue durée. À long terme, il identifie les sections du code du programme qui prennent du temps à s'exécuter. Bien qu'il identifie le temps précis nécessaire pour exécuter différentes sections du code, il n'identifie pas entièrement ni ne corrige les bogues dans le code.

Par conséquent, le besoin d'utiliser d'autres débogueurs se fait sentir.

Heureusement, vous pouvez utiliser les bibliothèques recommandées comme ipdb, Django-debug-toolbar, pyelftools, viztracer et py-spy comme outils de débogage pour votre code Python à la place.

The ipdb debugging tool

Le débogueur Python compatible IPython dans son intégralité est un débogueur tiers interactif qui contient pdbla fonctionnalité. IPBD est également livré avec un support IPython shell interactif. Cette prise en charge inclut l'achèvement des onglets, la prise en charge des couleurs et les fonctions magiques, entre autres fonctionnalités de prise en charge.

Ce débogueur permet d'accéder au débogueur IPython en exportant les fonctions pertinentes. Il propose également une interface similaire pour une meilleure introspection, tout comme dans le module pdb.

Débogage avec Ipdb

La bibliothèque nécessite une installation à l'aide de la commande pip ci-dessous.

pip install ipdb

Un exemple d'utilisation d'ipdb ressemblerait à ceci :

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()

Exécutez le fichier python en utilisant la commande ci-dessous où test.py est le nom de mon fichier :

python -m ipdb test.py

L'importation ipdb et l'exécution du ipdb.set_trace() La fonction autorise le début du programme et exécute le débogueur tout au long de l'exécution.

La solution ipdb.pm() fonction (post-mortem) agit de manière similaire à la %debug fonction magique.

arguments set_trace

Passer le contexte comme argument à set_trace pour afficher plusieurs lignes de code définies. En outre, cond, Qui set_trace accepte également comme argument, accepte les valeurs booléennes et démarre l'interface ipdb lorsque vous définissez cond à true.

Utilisation du fichier de configuration

Définissez l'argument de contexte avec un fichier idpdb ou le setup.cfg fichier disponible dans le dossier de départ et le dossier du projet, respectivement. Vous êtes invités à vérifier davantage les fonctionnalités d'ipdb.

Django Debug toolbar

La solution Barre d'outils de débogage Django est un outil de débogage populaire dans Django : un framework Python.

Cet ensemble configurable de panneaux affiche les informations de débogage d'une demande ou d'une réponse en cours. Lorsque vous cliquez sur la barre d'outils, plus de détails sur le contenu du panneau s'affichent.

Cet outil inspecte minutieusement l'environnement de développement de Django.

Suivez le processus d'installation et les instructions de configuration ici.

Pyelftools library

La solution pyelftools La bibliothèque est purement construite sur Python. Il analyse et analyse les fichiers ELF et les informations de débogage DWARF et ne nécessite que Python pour s'exécuter.

L'utilisation de Pyelftools est facile car il n'a pas de bibliothèques externes. De plus, l'utilisation de pyelftools sans installation est assez facile car elle nécessite simplement un ajustement PYTHONPATH dans les variables d'environnement.  

Vous l'installerez en utilisant :

pip install pyelftools 

L'implémentation de pyelftools nécessite simplement de l'importer et de l'invoquer dans votre programme.

The icecream 🍦 debugging tool

Il s'agit d'un autre outil de débogage efficace pour les développeurs Python.

En utilisant glace, Donc, ic(), présente de nombreux avantages par rapport à print(), comme indiqué ci-dessous :

  • Le taper est relativement plus rapide, littéralement.
  • Il imprime assez bien les structures de données.
  • Imprimer des expressions ou des noms de variables et leurs valeurs avec ic().
  • Il met en évidence la syntaxe de la sortie.
  • Facultativement, il inclut le contexte du programme, y compris le nom de fichier, le numéro de ligne et la fonction parent.                     

Avant d'utiliser ce package, installez-le à l'aide de la commande pip ci-dessous :

pip install icecream

La bonne chose est que vous pouvez profiter ic() dans tous les fichiers sans forcément l'importer dans tous les fichiers en l'installant avec install(). Par ailleurs, install() ajoute ic() au module intégré. Tous les fichiers que l'interpréteur importera partageront ic().

Dans votre premier fichier python racine, que vous pouvez nommer x.py, ajoutez ic() en utilisant install().

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

Dans le fichier y.py, le fichier x.py est importé, appelez ic ()

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

Résultats:

y
ic| z : 8

Ce qui rend ic() plus efficace est sa capacité à inspecter les variables qui lui sont transmises, y compris lui-même, puis à imprimer ses arguments et les valeurs des arguments comme dans l'exemple suivant.

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

Sortie :

ic| mult(100): 400

De plus, vous pouvez insérer ic() dans du code préexistant puisqu'il renvoie ses arguments. L'exemple ci-dessous renvoie ic| x: 12, puis ic| y: 48.

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

Debugging using the py-spy tool            

Vous pouvez utiliser py-espion pour profiler des exemples de programmes Python en tant qu'outil de débogage. Sans redémarrer le programme ni modifier son code, py-spy visualise l'exécution du programme Python. De plus, comme il est écrit en Rust, il a un faible temps système.

De plus, il convient de considérer que l'utilisation de py-spy contre le code Python de production est sûre car elle exécute un processus différent du programme Python profilé.

Comme tous les autres outils précédents que nous avons vus, vous pouvez utiliser l'outil py-spy après l'avoir installé.

pip install py-spy 

Bien que votre programme Python serve le trafic de production, vous pouvez toujours profiler et déboguer ce programme à l'aide de py-spy, ce qui en fait un outil de profilage Python essentiel.

Viztracer debugger

Alternativement, vous pouvez utiliser viztracer, un outil de débogage, pour suivre et visualiser l'exécution de votre programme Python. C'est également un outil de profilage avec une journalisation à faible temps système.

Ce qui rend viztraceur un outil de débogage efficace ?

  • Son utilisation est assez simple et ne dépend pas de packages externes pour fonctionner.
  • Viztracer fonctionne sur toutes les plates-formes de système d'exploitation : Windows, Linux ou macOS.
  • Son frontal puissant restitue en douceur la trace de niveau Go.
  • Il utilise RegEx pour enregistrer des fonctions arbitraires et des informations supplémentaires telles que variables et attributs, Exceptions déclenchées, Opérations Garbage Collector, etc., sans modifier aucune section de code dans votre code source.
  • Ce qui fait de viztracer un outil de débogage à faible coût, c'est sa capacité à filtrer les données dont vous n'avez pas besoin dans votre programme. Il conserve ensuite les anciennes informations avant de vider le journal au format JSON.
  • Vous pouvez l'utiliser pour insérer des événements personnalisés comme le événement instantané, les événement variable, et le Événement de durée pendant que le programme s'exécute. De cette façon, cela fonctionne comme un débogage d'impression, sauf que viztracer vous permet de savoir quand l'impression se produit lorsque vous tracez des données.

Conclusion

Profilage et débogage Python comme profilage logiciel est une étape clé d'un développement qui retient l'attention. Cette étape permet d'exclure toute section de code contenant des bogues afin d'optimiser les performances globales du code.

Les outils de débogage que nous avons abordés ci-dessus sont des outils efficaces qui facilitent le travail d'un développeur Python.

Voyant que les autres outils de débogage fonctionnent plus efficacement que le cProfiler, vous pouvez, comme un vrai héros, déboguer votre code Python et corriger les bogues potentiels utiliser ces débogueurs pour empêcher votre code de s'exécuter sans se bloquer.

Bon débogage !