Hier, j'ai fait une simulation en utilisant Python. J'ai eu quelques difficultés avec les variables et le débogage .
Existe-t-il un logiciel pour Python, qui fournit un débogueur décent?
Question connexe: Quelle est la meilleure façon de déboguer mon Python code?
N'oubliez pas le débogage post-mortem! Après qu'une exception est levée, le cadre de pile avec tous les locaux est contenu dans sys.last_traceback
. Vous pouvez faire pdb.pm()
pour aller au frame de pile où l'exception a été lancée alors p(retty)p(rint) the locals()
.
Voici une fonction qui utilise ces informations pour extraire les variables locales de la pile.
def findlocals(search, startframe=None, trace=False):
from pprint import pprint
import inspect, pdb
startframe = startframe or sys.last_traceback
frames = inspect.getinnerframes(startframe)
frame = [tb for (tb, _, lineno, fname, _, _) in frames
if search in (lineno, fname)][0]
if trace:
pprint(frame.f_locals)
pdb.set_trace(frame)
return frame.f_locals
Usage:
>>> def screwyFunc():
a = 0
return 2/a
>>> screwyFunc()
Traceback (most recent call last):
File "<pyshell#62>", line 1, in <module>
screwyFunc()
File "<pyshell#55>", line 3, in screwyFunc
return 2/a
ZeroDivisionError: integer division or modulo by zero
>>> findlocals('screwyFunc')
{'a': 0}
Winpdb est un plate-forme indépendante GPL graphique Python débogueur avec prise en charge du débogage à distance sur un réseau, plusieurs threads, modification de l'espace de noms, débogage intégré, communication chiffrée et est jusqu'à 20 fois plus rapide que pdb.
Fonctionnalités:
(source: winpdb.org )
pudb est un débogueur visuel pour python.
Vous pouvez consulter le python debugger pdb, qui est inclus dans la bibliothèque standard: http://docs.python.org/library/pdb.html
Comme le post suggéré, il y a quelques options:
pdb: le débogueur intégré de Python
pudb: débogueur GUI
pydbgr: une réécriture du débogueur pydb
ipdb: ipdb d'iPython
Je recommande pydb et ipython pour le débogage interactif.
Les deux ont des screencasts disponibles sur showmedo.com
Komodo IDE (pas le gratuit Komodo Edit ) est livré avec un débogueur. Je ne l'ai pas utilisé depuis plus d'un an, mais c'était bien à l'époque (v 3, IIRC).
J'ai utilisé PyCharm et WingIDE pour le débogage, les deux sont excellents.
PyCharm utilise pas mal de RAM (c'est en Java), mais j'ai fini par l'utiliser car je peux déboguer les doctests que j'exécute à partir de celui-ci.
WindIDE est écrit en Python, je l'aime plus que PyCharm sauf pour le manque de doctests en cours d'exécution.
Vous pouvez également essayer Spyder, que je n'ai jamais réussi à faire fonctionner.
Voir officiel Python wiki pour des suggestions. N'hésitez pas à mettre à jour et à vous abonner pour recevoir des notifications lorsque quelque chose de nouveau sort.