Suggestions pour les outils de débogage Python? [fermé]
hier j'ai fait une simulation en utilisant Python. J'ai eu quelques difficultés avec les variables et le débogage de .
y a-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 code Python?
10 réponses
n'oubliez pas le débogage post-mortem! Après une exception est jeté, le cadre de pile avec tous les locaux est contenu dans sys.last_traceback
. Vous pouvez faire pdb.pm()
pour aller au cadre de la pile où l'exception a été lancée puis p(retty)p(rint) le locals()
.
Voici une fonction qui utilise cette information 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
Utilisation:
>>> 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 débogueur graphique GPL Python "indépendant de la plate-forme qui prend en charge le déboguage à distance sur un réseau, plusieurs threads, la modification de l'espace de noms, le déboguage intégré, la communication chiffrée et est jusqu'à 20 fois plus rapide que pdb.
Dispose:
Licence GPL- . Winpdb est un logiciel libre.
- Compatible avec CPython 2.3 à 2.6 et Python 3000
- Compatible avec wxPython 2.6 à 2.8
- plate-forme indépendante, et testé sur Ubuntu Gutsy et Windows XP.
- Interfaces utilisateur: rpdb2 est basé sur la console, alors que winpdb nécessite wxPython 2.6 ou plus tard.
Capture d'écran http://winpdb.org/images/screenshot_winpdb_small.jpg
vous pouvez consulter le débogueur Python pdb, qui est inclus dans la bibliothèque standard: http://docs.python.org/library/pdb.html
je recommande pydb et ipython pour le débogage interactif.
ont tous les deux des screencasts disponibles à showmedo.com
Komodo IDE (pas le free Komodo Edit ) est livré avec un débogueur. Je ne l'ai pas utilisé depuis plus d'un an, mais il était bon à l'époque (v 3, IIRC).
j'ai utilisé PyCharm et WingIDE pour le débogage, les deux sont bons pour le débogage.
PyCharm utilise beaucoup 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 lui.
WindIDE est écrit en Python, je l'aime plus que PyCharm sauf le manque d'exécution de doctests.
vous pouvez aussi essayer Spyder, que je n'ai jamais réussi à faire fonctionner.
officiels Python wiki pour des suggestions. N'hésitez pas à mettre à jour et à vous abonner pour recevoir des notifications lorsque quelque chose de nouveau sort.