Pouvez-vous passer à travers le code python pour aider à déboguer les problèmes?
en java / C# vous pouvez facilement passer à travers le code pour tracer ce qui pourrait aller mal, et les IDE rendent ce processus très convivial.
pouvez-vous tracer à travers le code python de façon similaire?
11 réponses
Oui! Il y a un débogueur Python appelé pdb
juste pour faire ça!
vous pouvez lancer un programme Python via pdb
en utilisant pdb myscript.py
ou python -m pdb myscript.py
.
il y a quelques commandes que vous pouvez ensuite émettre, qui sont documentées sur la page pdb
".
quelques-unes utiles à retenir sont:
-
b
: ensemble a point de rupture -
c
: continuez le débogage jusqu'à ce que vous atteigniez un point de rupture -
s
: entrez le code -
n
: pour passer à la ligne suivante du code -
l
: liste du code source du fichier courant (par défaut: 11 lignes, y compris la ligne en cours d'exécution) -
u
: naviguer vers le haut d'un cadre de pile -
d
: naviguer vers le bas un cadre de pile -
p
: pour imprimer la valeur d'une expression dans le contexte actuel
si vous ne voulez pas utiliser un débogueur en ligne de commande, certains IDEs comme Pydev ont un débogueur GUI.
en utilisant le débogueur interactif Python "pdb"
la première étape est de faire l'interpréteur Python pour entrer dans le mode de débogage.
A. de la ligne de commande
Plus simple, fonctionnant à partir de la ligne de commande de l'interpréteur python
$ python -m pdb scriptName.py
> .../pdb_script.py(7)<module>()
-> """
(Pdb)
B. Au sein de L'interprète
tout en développant les premières versions de modules et de l'expérimenter de manière plus itérative.
$ python
Python 2.7 (r27:82508, Jul 3 2010, 21:12:11)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pdb_script
>>> import pdb
>>> pdb.run('pdb_script.MyObj(5).go()')
> <string>(1)<module>()
(Pdb)
C. De Votre Programme
pour un grand projet et un module de longue durée, peut démarrer le débogage de l'intérieur du programme en utilisant importer apb et set_trace() comme ceci:
#!/usr/bin/env python
# encoding: utf-8
#
import pdb
class MyObj(object):
count = 5
def __init__(self):
self.count= 9
def go(self):
for i in range(self.count):
pdb.set_trace()
print i
return
if __name__ == '__main__':
MyObj(5).go()
débogage étape par étape pour entrer dans plus interne
-
Exécuter l'instruction suivante... avec "n" (suivant)
-
répétant la dernière commande de débogage... avec entrer
-
J'arrête tout... avec " q " (j'arrête)
-
Imprimer la valeur des variables... avec" p "(imprimer)
un) p
-
mise hors tension de l' (Apb) invite... avec "c" (continuer)
-
voir où vous en êtes ... avec " l " (liste)
-
Marcher dans les sous-programmes... avec "s" (étape en)
-
Continue... mais juste à la fin de la sous-programme actuel ... avec " r " (retour)
-
attribuer une nouvelle valeur
a) !b = " B "
-
Définir un point d'arrêt
a) pause linenumber
b) pause functionname
c) casser nom de fichier:linenumber
-
point de rupture temporaire
a) tbreak linenumber
-
point de rupture conditionnel
a) pause linenumber, la condition
Note: * * toutes ces commandes doivent être exécutées à partir de * * pdb
pour connaissance approfondie, voir: -
https://pythonconquerstheuniverse.wordpress.com/2009/09/10/debugging-in-python /
il y a un module appelé " pdb " en python. En haut de votre script python vous faites
import pdb
pdb.set_trace()
et vous passerez en mode débogage. Vous pouvez utiliser' s 'pour step,' n 'pour suivre la ligne suivante similaire à ce que vous feriez avec' gdb ' debugger.
si vous voulez un IDE avec débogueur intégré, essayez PyScripter .
à partir de Python 3.7, vous pouvez utiliser la fonction breakpoint()
intégrée pour entrer dans le débogueur:
foo()
breakpoint() # drop into the debugger at this point
bar()
par défaut, breakpoint()
importera pdb
et appellera pdb.set_trace()
. Cependant, vous pouvez contrôler le comportement de débogage via sys.breakpointhook()
et l'utilisation de la variable d'environnement PYTHONBREAKPOINT
.
Voir PEP 553 pour plus d'informations.
par programmation pas à pas et la traçabilité par code python est aussi possible (et facile!). Regardez le système .setrace () pour plus de détails. Aussi ici est un tutoriel pour vous aider à démarrer.
Visual Studio avec PTVS pourrait être une option pour vous: http://www.hanselman.com/blog/OneOfMicrosoftsBestKeptSecretsPythonToolsForVisualStudioPTVS.aspx
https://wiki.python.org/moin/PythonDebuggingTools
pudb est une bonne baisse-dans le remplacement pour apb
PyCharm est un IDE pour Python qui inclut un débogueur. Regardez cette vidéo sur YouTube pour une introduction sur l'utilisation du débogueur de PyCharm pour passer à travers le code.
Tutorial PyCharm-déboguer le code python en utilisant PyCharm
Note: il ne s'agit pas d'une approbation ou d'un examen. PyCharm est un produit commercial que l'on doit payer pour, mais la société ne fournira gratuitement une licence pour les étudiants et les enseignants, ainsi que d'un version communautaire "légère" qui est libre et open-source.
vous pouvez regarder débogueur python qui fait exactement ce que vous cherchez seulement pas à travers une interface graphique