Sugestões para Ferramentas de depuração em Python? [fechado]
Existe algum software para Python, que forneça um depurador decente?
pergunta relacionada: Qual é a melhor maneira de depurar o meu código Python?
10 answers
sys.last_traceback
. Você pode fazer pdb.pm()
para ir para a moldura da pilha onde a exceção foi lançada, em seguida, p (retty) p (rint) o locals()
.
Aqui está uma função que usa esta informação para extrair as variáveis locais da pilha.
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
Utilização:
>>> 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}
O Winpdb é um depurador gráfico em Python da plataforma independente de plataformas com suporte para depuração remota através de uma rede, vários tópicos, modificação de espaços de nomes, depuração incorporada, comunicação encriptada e é até 20 vezes mais rápido que o pdb.
Características:
- licença GPL. O Winpdb é software livre.
- compatível com o CPython 2.3 a 2.6 e o Python 3000
- compatível com o wxPython 2, 6 a 2, 8
- Plataforma independente, e testado em Ubuntu Gutsy e Windows XP.
- Interfaces de utilizador: o rpdb2 é baseado na consola, enquanto o winpdb necessita do wxPython 2, 6 ou mais tarde.
Poderá verificar o pdb do depurador python, que está incluído na biblioteca-padrão: http://docs.python.org/library/pdb.html
Como o post sugerido, existem algumas opções:
Pdb: depurador incorporado do Python
Pudb: depurador GUI
Pydbgr: uma reescrita do depurador pydb
Ipdb: ipython's ipdb
Eu recomendaria pydbe ipython para depuração interactiva.
Ambos têm screencasts disponíveis em showmedo.com
Komodo IDE (não o free Komodo Edit) vem com um depurador. Não o uso há mais de um ano, mas era bom naquela época (v 3, IIRC).
Existe um plugin Eclipse para o Python que suporta depuração, entre outras ferramentas. Veja o Tutorial para começar, e o site para download. É claro que você vai precisar de obter Eclipse também.
O PyCharm usa bastante RAM( é em Java), ainda assim acabei por usá-lo como posso depurar doctests que estou executando a partir dele.
O WindIDE está escrito em Python, gosto mais dele do que o PyCharm, excepto a falta de documentos em execução. Também podes tentar o Spyder, que nunca consegui fazer funcionar.Ver o oficial Python wiki para sugestões. Sinta-se livre para atualizar e se inscrever para receber notificações quando algo novo sair.