对Python调试工具的建议?

Léo*_* 준영 40 python simulation debugging

昨天我使用Python进行了模拟.我在变量和调试方面遇到了一些困难.

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

相关问题:调试Python代码的最佳方法是什么?

nos*_*klo 31

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

特征:

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

截图
(来源:winpdb.org)


mik*_*iku 27

pudb是python的可视化调试器.

pudb截图

  • pudb是我在调试工具中想要的.普通的pdb不是用户友好的.pudb给出了我需要的视觉反馈.谢谢你的建议 (2认同)
  • `python -m pudb script.py` 并且您正在调试代码而不修改它 (2认同)

aoe*_*256 18

不要忘记验尸调试!抛出异常后,包含所有本地的堆栈帧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
Run Code Online (Sandbox Code Playgroud)

用法:

>>> 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}
Run Code Online (Sandbox Code Playgroud)


syk*_*ora 11

您可以查看python调试器pdb,它包含在标准库中:http://docs.python.org/library/pdb.html


ciz*_*ixs 11

帖子所示,有几个选择:

  • pdb:Python的内置调试器 PDB

  • pudb:GUI调试器 pudb

  • pydbgr:重写pydb调试器 pydbgrb

  • ipdb:iPython的ipdb IPDB


Rya*_*yan 8

我建议使用pydbipython进行交互式调试.

两者都有showmedo.com提供的截屏视频

  • pydb 现在称为 trepan。请参阅 https://pypi.python.org/pypi/trepan 或 https://pypi.python.org/pypi/trepan3k。(当讲波兰语的人告诉你你的名字很难发音时,是时候改名了) (2认同)

Mat*_*kel 6

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