Winpdb
(存档链接 / SourceForge.net / Google Code Archive)是一个平台无关的图形化GPL Python调试器,支持通过网络进行远程调试,多线程,命名空间修改,嵌入式调试,加密通信,并且比pdb快20倍。
特点:
替代方案:官方winpdb的分支
(winpdb-reborn · PyPI / GitHub)
(来源:winpdb.org)
pudb是Python的可视化调试器。
python -m pudb script.py
,你可以在不修改代码的情况下进行调试。 - Fibo Kowalskysys.last_traceback
中。您可以使用pdb.pm()
进入引发异常的堆栈帧,然后打印locals()
。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
使用方法:
>>> 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}
正如该文章所建议的,有以下几种选择:
pdb:Python内置调试器
(来源:cachefly.net)
pudb:GUI调试器
(来源:cachefly.net)
pydbgr:pydb调试器的重写
(来源:cachefly.net)
ipdb:iPython的ipdb
(来源:cachefly.net)
Komodo IDE(不是免费的Komodo Edit)附带有调试器。虽然我已经一年没有使用过它了,但在那时(我IRC 3版),它表现不错。
我使用过PyCharm和WingIDE进行调试,两者都非常出色。
由于PyCharm是基于Java编写的,因此它会占用相当多的内存。但最终我还是选择了它,因为我可以从中执行doctest并进行调试。
WingIDE是使用Python编写的,我比较喜欢它,但缺点是无法运行doctest。
你也可以尝试Spyder,不过我一直没成功过。