Pregunta

Ayer hice una simulación usando Python. Tuve algunas dificultades con variables y depuración .

¿Existe algún software para Python que proporcione un depurador decente?

Pregunta relacionada: ¿Cuál es la mejor manera de depurar mi código Python?

¿Fue útil?

Solución

¡No se olvide de la depuración post mortem! Después de que se lanza una excepción, el marco de la pila con todos los locales está contenido dentro de sys.last_traceback . Puede hacer pdb.pm () para ir al marco de la pila donde se produjo la excepción y luego p (retty) p (rint) los locales () .

Aquí hay una función que utiliza esta información para extraer las variables locales de la pila.

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

Uso:

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

Otros consejos

Winpdb es un depurador gráfico de Python GPL independiente de la plataforma con soporte para depuración remota sobre una red, múltiples hilos, modificación del espacio de nombres, depuración incrustada, comunicación cifrada y es hasta 20 veces más rápido que pdb.

Características:

  • licencia GPL. Winpdb es software libre.
  • Compatible con CPython 2.3 a 2.6 y Python 3000
  • Compatible con wxPython 2.6 a 2.8
  • Plataforma independiente y probada en Ubuntu Gutsy y Windows XP.
  • Interfaces de usuario: rpdb2 está basado en la consola, mientras que winpdb requiere wxPython 2.6 o posterior.

 Captura de pantalla
(fuente: winpdb.org )

pudb es un depurador visual para python.

captura de pantalla de pudb

Puede consultar el depurador de python pdb, que se incluye en la biblioteca estándar: http: / /docs.python.org/library/pdb.html

Como la publicación sugirió, hay algunas opciones:

  • pdb: depurador incorporado de Python pdb

  • pudb: depurador de GUI pudb

  • pydbgr: una reescritura del depurador pydb pydbgrb

  • ipdb: ipdb de iPython ipdb

Recomiendo pydb y ipython para depuración interactiva.

Ambos tienen screencasts disponibles en showmedo.com

Komodo IDE (no el Komodo Edit ) gratuito viene con un depurador. No lo he usado en más de un año, pero fue bueno en ese entonces (v 3, IIRC).

Hay un complemento de Eclipse para Python que admite depuración, entre otras herramientas. Consulte el Tutorial para comenzar, y el Sitio web para descargar. Por supuesto, necesitará obtener Eclipse también.

Utilicé PyCharm y WingIDE para la depuración, ambos son excelentes para la depuración.

PyCharm usa bastante RAM (está en Java), pero terminé usándolo, ya que puedo depurar los documentos que estoy ejecutando desde él.

WindIDE está escrito en Python, me gusta más que PyCharm, excepto la falta de pruebas de funcionamiento.

También puedes probar Spyder, que nunca logré hacer funcionar.

Ver Wiki de Python oficial para sugerencias. Siéntase libre de actualizar y suscribirse para recibir notificaciones cuando salga algo nuevo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top