对Python调试工具的建议?

时间:2009-01-25 05:14:42

标签: python debugging simulation

昨天我使用Python进行了模拟。我对变量和调试有一些困难。

是否有适用于Python的软件,它提供了一个不错的调试器?

相关问题:What is the best way to debug my Python code?

10 个答案:

答案 0 :(得分:31)

Winpdb是一个平台独立的图形GPL Python调试器,支持通过网络进行远程调试,多线程,命名空间修改,嵌入式调试,加密通信,速度提高20倍比pdb。

特点:

  • GPL许可证。 Winpdb是自由软件。
  • 与CPython 2.3到2.6和Python 3000
  • 兼容
  • 与wxPython 2.6至2.8
  • 兼容
  • 独立于平台,并在Ubuntu Gutsy和Windows XP上进行测试。
  • 用户界面:rpdb2是基于控制台的,而winpdb需要wxPython 2.6或更高版本。

Screenshot
(来源:winpdb.org

答案 1 :(得分:26)

pudb是python的可视化调试器。

pudb screenshot

答案 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的内置调试器 pdb

  • pudb:GUI调试器 pudb

  • pydbgr:重写pydb调试器 pydbgrb

  • ipdb:iPython的ipdb ipdb

答案 5 :(得分:8)

我建议pydbipython进行交互式调试。

两者都有showmedo.com

的截屏视频

答案 6 :(得分:6)

Komodo IDE(不是免费Komodo Edit)附带调试器。我在一年多的时间里没有使用它,但当时它很好(第3版,IIRC)。

答案 7 :(得分:3)

有一个用于Python的Eclipse插件,它支持调试等工具。请参阅Tutorial开始使用,Website进行下载。当然,您还需要获得Eclipse

答案 8 :(得分:3)

我使用PyCharm和WingIDE进行调试,两者都非常适合调试。

PyCharm使用相当多的RAM(它是用Java编写的),但我最终还是使用它,因为我可以调试我正在执行的doctests。

WindIDE是用Python编写的,除了没有运行doctests之外,我比PyCharm更喜欢它。

您也可以尝试Spyder,我从未成功过。

答案 9 :(得分:2)

有关建议,请参见官方Python wiki。随时可以更新并订阅接收通知。

相关问题