Déboguer Python comme un héros avec ces bibliothèques et outils
Publié: 2022-06-26Voulez-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 au 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 en quoi ces débogueurs sont différents les uns des autres et ce qui rend leur implémentation efficace.
bibliothèque de débogage cProfiler
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.
L'outil de débogage ipdb
Le débogueur Python compatible IPython dans son intégralité est un débogueur tiers interactif qui contient les fonctionnalités de pdb. 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 de la fonction ipdb.set_trace()
permettent le début du programme et exécutent le débogueur tout au long de l'exécution.
La fonction ipdb.pm()
(post-mortem) agit de la même manière que la fonction magique %debug
.
arguments set_trace
Passez le contexte comme argument à set_trace
pour afficher plusieurs lignes de code définies. De plus, cond
, que set_trace
accepte également comme argument, accepte les valeurs booléennes et démarre l'interface ipdb lorsque vous définissez cond
sur true
.
Utilisation du fichier de configuration
Définissez l'argument de contexte avec un fichier idpdb ou le fichier setup.cfg
disponible respectivement dans le dossier de départ et le dossier du projet. Vous êtes invités à vérifier davantage les fonctionnalités d'ipdb.
Barre d'outils de débogage de Django
La 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.
Bibliothèque Pyelftools
La bibliothèque pyelftools 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 simple car il suffit d'ajuster 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.
L'outil de débogage de glace
Il s'agit d'un autre outil de débogage efficace pour les développeurs Python.

L'utilisation de icecream, également 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.
- Affiche les expressions ou les 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 du 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 utiliser ic()
dans tous les fichiers sans nécessairement l'importer dans tous les fichiers en l'installant à l'aide de install()
. De plus, install()
ajoute ic()
au module builtins. Tous les fichiers importés par l'interpréteur 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))
Production:
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
ic| x: 12
, puis ic| y: 48
ic| y: 48
.
from icecream import ic x = 12 def mult(x): return x*4 y = mult(ic(x)) ic(y)
Débogage à l'aide de l'outil py-spy
Vous pouvez utiliser py-spy 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 une faible surcharge.
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.
Débogueur Viztracer
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.
Qu'est-ce qui fait de viztracer 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 consigner des fonctions arbitraires et des informations supplémentaires telles que des variables et des attributs, des exceptions levées, des 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 tels que l'événement instantané, l'événement variable et l'événement Durée pendant l'exécution du programme. 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
Le profilage et le débogage Python tout comme le profilage logiciel est une étape clé dans un développement qui demande de 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 en utilisant ces débogueurs pour empêcher votre code de s'exécuter sans planter.
Bon débogage !