昨天我使用Python进行了模拟。我对变量和调试有一些困难。
是否有适用于Python的软件,它提供了一个不错的调试器?
答案 0 :(得分:31)
Winpdb是一个平台独立的图形GPL Python调试器,支持通过网络进行远程调试,多线程,命名空间修改,嵌入式调试,加密通信,速度提高20倍比pdb。
特点:
(来源:winpdb.org)
答案 1 :(得分:26)
pudb是python的可视化调试器。
答案 2 :(得分:17)
不要忘记验尸调试!抛出异常后,包含所有本地的堆栈帧包含在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}
答案 3 :(得分:11)
你可以查看python调试器pdb,它包含在标准库中:http://docs.python.org/library/pdb.html
答案 4 :(得分:11)
如the post所述,有几个选项:
pdb:Python的内置调试器
pudb:GUI调试器
pydbgr:重写pydb调试器
ipdb:iPython的ipdb
答案 5 :(得分:8)
答案 6 :(得分:6)
Komodo IDE(不是免费Komodo Edit)附带调试器。我在一年多的时间里没有使用它,但当时它很好(第3版,IIRC)。
答案 7 :(得分:3)
答案 8 :(得分:3)
我使用PyCharm和WingIDE进行调试,两者都非常适合调试。
PyCharm使用相当多的RAM(它是用Java编写的),但我最终还是使用它,因为我可以调试我正在执行的doctests。
WindIDE是用Python编写的,除了没有运行doctests之外,我比PyCharm更喜欢它。
您也可以尝试Spyder,我从未成功过。
答案 9 :(得分:2)
有关建议,请参见官方Python wiki。随时可以更新并订阅接收通知。