¿Sugerencias para las herramientas de depuración de Python? [cerrado]
-
20-08-2019 - |
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?
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.
(fuente: winpdb.org )
pudb es un depurador visual para python.
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
-
pudb: depurador de GUI
-
pydbgr: una reescritura del depurador pydb
-
ipdb: ipdb de iPython
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).
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.