【问题标题】:Suggestions for Python debugging tools? [closed]对 Python 调试工具的建议? [关闭]
【发布时间】:2010-10-03 09:28:12
【问题描述】:

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

有没有 Python 软件,提供了不错的调试器?

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

【问题讨论】:

标签: python debugging simulation


【解决方案1】:

正如the post 建议的那样,有几个选项:

  • pdb:Python 的内置调试器
    (来源:cachefly.net

  • pudb:图形用户界面调试器
    (来源:cachefly.net

  • pydbgr:对 pydb 调试器的重写
    (来源:cachefly.net

  • ipdb:iPython 的 ipdb
    (来源:cachefly.net

【讨论】:

  • 我发现 Spyder IDE 中内置的可视化调试器对于科学调试尤其是涉及矩阵的科学调试非常方便。也许您可以将其添加到您的答案中?
【解决方案2】:

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

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

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

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

【讨论】:

  • +1 用于 PyCharm,超级容易设置断点。另外,我发现它对 Django 项目特别有用。它对开源项目也是免费的!
  • 对于 web 项目 Werkzeug 看起来很棒,它就像一个 Python 控制台就在你的浏览器中,可以访问你的本地人。您可以在 Werkzeug 中正确编码,然后当您正确编写代码时,您可以将其复制/粘贴到您的编辑器中。
【解决方案3】:

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

【讨论】:

    【解决方案4】:

    不要忘记事后调试!抛出异常后,包含所有局部变量的堆栈帧包含在 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 本地模块的新的出色答案,我们花了大约 5 年的时间才取得进展。如果您可以将您的答案与 JackWu 的答案进行比较和对比,那就太好了。
    【解决方案5】:

    请参阅官方Python wiki 获取建议。当有新东西出现时,请随时更新和订阅以接收通知。

    【讨论】:

      【解决方案6】:

      pudb 是 python 的可视化调试器。

      【讨论】:

      • pudb 是我一直想要的调试工具。常规 pdb 对用户不友好。 pudb 提供了我需要的视觉反馈。谢谢推荐
      • python -m pudb script.py 你正在调试代码而不修改它
      【解决方案7】:

      有一个支持调试的 Python Eclipse 插件以及其他工具。请参阅 Tutorial 开始,以及 Website 下载。当然,您还需要获得Eclipse

      【讨论】:

        【解决方案8】:

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

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

        【讨论】:

        【解决方案9】:

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

        【讨论】:

        • Komodo 绝对适合调试。
        • Komodo Edit 中的调试器与 Komodo IDE 中的调试器有何不同?对我来说,Komodo Edit 很快就解决了三个缩进问题。
        • 也许他们已经在较新的版本中添加了它。 18 个月前绝对没有!
        【解决方案10】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-16
          • 2012-04-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多