web-dev-qa-db-fra.com

Suggestions pour Python outils de débogage?

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}
18
aoeu256

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:

  • Licence GPL. Winpdb est un logiciel libre.
  • Compatible avec CPython 2.3 à 2.6 et Python 3000
  • Compatible avec wxPython 2.6 à 2.8
  • Indépendant de la plate-forme, et testé sur Ubuntu Gutsy et Windows XP.
  • Interfaces utilisateur: rpdb2 est basé sur la console, tandis que winpdb nécessite wxPython 2.6 ou version ultérieure.

Screenshot
(source: winpdb.org )

31
nosklo

pudb est un débogueur visuel pour python.

pudb screenshot

27
miku

Vous pouvez consulter le python debugger pdb, qui est inclus dans la bibliothèque standard: http://docs.python.org/library/pdb.html

11
sykora

Comme le post suggéré, il y a quelques options:

  • pdb: le débogueur intégré de Python pdb

  • pudb: débogueur GUI pudb

  • pydbgr: une réécriture du débogueur pydb pydbgrb

  • ipdb: ipdb d'iPython ipdb

11
cizixs

Je recommande pydb et ipython pour le débogage interactif.

Les deux ont des screencasts disponibles sur showmedo.com

8
Ryan

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).

6
Matthew Schinckel

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.

3
Mark Horvath

Il existe un plug-in Eclipse pour Python qui prend en charge le débogage, entre autres outils. Voir le Tutoriel pour commencer, et le Site Web = à télécharger. Bien sûr, vous devrez également obtenir Eclipse .

3
Leonid

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.

2