2

除了使用带有调试器的完全集成的 IDE 用于 python(如 Eclipse)之外,是否有任何小工具可以实现这一点:

  • 运行程序时,我希望能够在某处挂钩(类似于插入打印语句)并使用对象检查器调用窗口(树视图)
  • 关闭窗口后,程序应恢复

它不需要打磨,甚至不是绝对稳定,它可以是一些小部件库(如 wx)的内省示例代码。不过,平台独立会很好(不是 PyObjC 程序,或 Windows 上的类似程序)。

有任何想法吗 ?

编辑:是的,我知道 pdb,但我正在寻找所有当前对象的图形树。

不过,这里有一个很好的介绍如何使用 pdb(在这种情况下是在 Django 中): pdb + Django

4

5 回答 5

5

Winpdb是一个独立于平台的图形 GPL Python 调试器,带有对象检查器。

它支持通过网络进行远程调试、多线程、命名空间修改、嵌入式调试、加密通信,并且比 pdb 快 20 倍。

其他一些功能:

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

这是一个屏幕截图,显示了左上角的本地对象树。

截屏
(来源:winpdb.org

于 2009-09-28T19:29:55.860 回答
2

pdb 不是窗口化的,它在控制台中运行,但它是在 Python 程序中调试的标准方式。

将其插入您要停止的位置:

import pdb;pdb.set_trace() 

你会在标准输出上得到提示。

于 2009-09-28T16:44:42.340 回答
1

如果商业解决方案是可接受的,Wingware可能是 OP 期望的答案(Wingware 确实有免费版本,但我认为他们没有他需要的全部调试能力,而付费版本确实提供了)。

于 2009-09-28T16:53:57.480 回答
1

Python 调试技术值得一读。Reddit 的评论也值得一读。我真的从布赖恩的评论中找到了一些不错的调试技巧。比如这个评论这个评论
当然,WingIDE 很酷(用于一般的 Python 编码和 Python 代码调试),我每天都在使用它。不幸的是,WingIDE 目前仍然无法嵌入 IPython。

于 2009-09-29T02:23:25.553 回答
-1

您可以使用 ipython,与%debug语句。一旦你的代码崩溃,你可以添加断点,查看对象等。启动调试器的一个非常粗略的方法是raise Exception在你的代码的某一行,在 ipython 中运行它,%debug它是崩溃时的类型。

于 2009-09-28T16:39:38.373 回答