gui debugger debug code app python debugging simulation

debugger - Sugerencias para las herramientas de depuración de Python?



python pdb (10)

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

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

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




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

caracteristicas:

  • 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 probado 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 http://winpdb.org/images/screenshot_winpdb_small.jpg


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


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


pudb es un depurador visual para python.


Consulte la wiki oficial de Python para obtener sugerencias. Siéntase libre de actualizar y suscribirse para recibir notificaciones cuando salga algo nuevo.


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

PyCharm usa bastante RAM (está en Java), aún así terminé usándola, ya que puedo depurar doctests que estoy ejecutando desde allí.

WindIDE está escrito en Python, me gusta más que PyCharm, excepto la falta de ejecución de doctests.

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


Como sugiere la publicación , hay algunas opciones:

  • pdb: depurador incorporado de Python

  • pudb: depurador GUI

  • pydbgr: una reescritura del depurador pydb

  • ipdb: ipdb de iPython


¡No te olvides de la depuración post mortem! Después de lanzar una excepción, el marco de pila con todos los locales está contenido en sys.last_traceback . Puede hacer pdb.pm() para ir al marco de pila donde se lanzó la excepción, luego p (retty) p (rint) los locals() .

Aquí hay una función que usa 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}