43

昨天我用Python做了一个模拟。我在变量和调试方面遇到了一些困难。

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

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

4

10 回答 10

32

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

于 2009-01-25T05:53:27.513 回答
28

pudb是 python 的可视化调试器。

pudb截图

于 2011-06-20T22:39:41.560 回答
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

用法:

>>> 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}
于 2014-08-20T16:00:17.863 回答
11

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

于 2009-01-25T05:18:08.943 回答
11

正如帖子所建议的,有几个选项:

于 2014-03-24T07:22:44.823 回答
8

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

两者都在showmedo.com上提供了截屏视频

于 2009-01-25T05:20:44.460 回答
6

Komodo IDE(不是免费的Komodo Edit)带有一个调试器。我已经一年多没有使用它了,但当时它很好(v 3,IIRC)。

于 2009-01-25T07:55:06.350 回答
3

除了其他工具外,还有一个支持调试的 Python Eclipse 插件。请参阅教程开始,和网站下载。当然,您还需要获得Eclipse

于 2010-09-05T11:38:29.760 回答
3

我使用 PyCharm 和 WingIDE 进行调试,两者都很棒。

PyCharm 使用了相当多的 RAM(它在 Java 中),但我最终还是使用了它,因为我可以调试我正在从中执行的文档测试。

WindIDE 是用 Python 编写的,我比 PyCharm 更喜欢它,除了缺少运行的 doctest。

你也可以试试 Spyder,我从来没有成功过。

于 2013-06-21T15:54:07.983 回答
2

有关建议,请参阅官方Python wiki。当有新内容出现时,请随时更新和订阅以接收通知。

于 2012-05-21T09:04:31.353 回答