La fonction Python `breakpoint()` est une nouvelle fonction intégrée introduite dans Python 3.7. Le débogage du code Python a toujours été un processus douloureux en raison du couplage étroit entre le code réel et le code du module de débogage. Par exemple, si vous utilisez le débogueur pdb, vous devrez appeler pdb.set_trace()
dans le code de votre programme. Si vous souhaitez utiliser un autre débogueur, disons web-pdb
, alors vous devrez supprimer tout le code lié à PDB et ajouter la méthode web_pdb.set_trace()
. Cela entraîne une surcharge importante dans l’utilisation du débogueur Python et rend le code Python difficile à déboguer et à maintenir. C’est pourquoi Python 3.7 a introduit la méthode breakpoint()
qui nous permet d’écrire un code de débogage faiblement couplé.
Python breakpoint()
La fonction `breakpoint()` de Python appelle la fonction sys.breakpointhook()
. Par défaut, `sys.breakpointhook()` appelle la fonction pdb.set_trace()
. Ainsi, au moins, l’utilisation de `breakpoint()` offre une commodité dans l’utilisation d’un débogueur car nous n’avons pas besoin d’importer explicitement le module pdb
. Regardons un exemple simple d’utilisation de la fonction `breakpoint()`. Nous avons un script Python python_breakpoint_examples.py
avec le code suivant.
x = 10
y = 'Hi'
z = 'Hello'
print(y)
breakpoint()
print(z)
Lorsque nous exécutons ce script, la console du débogueur PDB s’ouvre.
$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() – Arrêt du débogage
La fonction sys.breakpointhook() de Python utilise la variable d’environnement PYTHONBREAKPOINT pour configurer le débogueur. Si elle n’est pas définie, le débogueur PDB par défaut est utilisé. Si elle est définie sur « 0 », alors la fonction retourne immédiatement et aucun débogage de code n’est effectué. C’est très utile lorsque nous voulons exécuter notre code sans débogage.
$PYTHONBREAKPOINT=0 python3.7 python_breakpoint_examples.py
Hi
Hello
$
Python breakpoint() – Changer de module de débogage
Nous pouvons utiliser la variable d’environnement PYTHONBREAKPOINT pour fournir la méthode de débogueur à appeler par la fonction breakpoint(). Cela est très utile car nous pouvons changer facilement de module de débogueur sans apporter de modification au code. Disons que nous voulons utiliser le débogueur web-pdb
. Nous pouvons facilement l’accrocher à notre programme en utilisant PYTHONBREAKPOINT=web_pdb.set_trace
. Tout d’abord, assurez-vous que web-pdb est installé. Vous pouvez l’installer en utilisant la commande pip3.7 install web-pdb
.
Selon la documentation de web-pdb, il est compatible avec la nouvelle fonction breakpoint() ajoutée dans 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...
Ouvrez l’URL du serveur web fournie dans le journal de la console et vous verrez la fenêtre de débogage comme sur l’image ci-dessous.
Nous pouvons émettre des commandes PDB à l’aide de cette interface utilisateur, vous pouvez envoyer la commande « c » pour continuer et terminer notre programme.
Résumé
La fonction breakpoint() Python est un ajout très utile à la fonctionnalité de débogage Python. Il est recommandé d’utiliser cela pour le débogage afin que vous puissiez facilement accrocher d’autres débogueurs tiers à la volée. Il offre également une option facile pour désactiver le débogueur et exécuter le programme normalement.
Vous pouvez consulter plus d’exemples Python depuis notre Dépôt GitHub.
Référence: Documentation Officielle
Source:
https://www.digitalocean.com/community/tutorials/python-breakpoint