昨天我用Python做了一个模拟。我在变量和调试方面遇到了一些困难。
是否有任何 Python 软件,它提供了一个不错的调试器?
Winpdb是一个独立于平台的图形化 GPL Python 调试器,支持网络远程调试、多线程、命名空间修改、嵌入式调试、加密通信,比 pdb 快 20 倍。
特征:
(来源:winpdb.org)
pudb是 python 的可视化调试器。
不要忘记事后调试!抛出异常后,包含所有局部变量的堆栈帧包含在sys.last_traceback
. 您可以pdb.pm()
转到引发异常的堆栈帧,然后 p(retty)p(rint) 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}
您可以查看标准库中包含的 python 调试器 pdb:http: //docs.python.org/library/pdb.html
正如帖子所建议的,有几个选项:
pdb:Python 的内置调试器
(来源:cachefly.net)
pudb:GUI 调试器
(来源:cachefly.net)
pydbgr:对 pydb 调试器的重写
(来源:cachefly.net)
ipdb:iPython 的 ipdb
(来源:cachefly.net)
Komodo IDE(不是免费的Komodo Edit)带有一个调试器。我已经一年多没有使用它了,但当时它很好(v 3,IIRC)。
我使用 PyCharm 和 WingIDE 进行调试,两者都很棒。
PyCharm 使用了相当多的 RAM(它在 Java 中),但我最终还是使用了它,因为我可以调试我正在从中执行的文档测试。
WindIDE 是用 Python 编写的,我比 PyCharm 更喜欢它,除了缺少运行的 doctest。
你也可以试试 Spyder,我从来没有成功过。
有关建议,请参阅官方Python wiki。当有新内容出现时,请随时更新和订阅以接收通知。