Python对象检查器?

时间:2009-09-28 16:17:54

标签: python debugging introspection

除了使用带有调试器的完全集成的IDE(如Eclipse)之外,还有什么小工具可以实现这个目的:

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

它不需要抛光,甚至不是绝对稳定,它可以是像wx这样的小部件库的内省示例代码。独立于平台会很不错(不是PyObjC程序,或类似于Windows的程序)。

任何想法?

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

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

5 个答案:

答案 0 :(得分: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或更高版本。

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

Screenshot
(来源:winpdb.org

答案 1 :(得分:3)

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

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

import pdb;pdb.set_trace() 

你会在stdout上得到提示。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

Python Debugging Techniques值得一读。而且it's Reddit's comment也值得一读。我真的从Brian的评论中找到了一些不错的调试技巧。例如this commentthis comment 当然,WingIDE很酷(对于一般的Python编码和Python代码调试),我每天都使用它。不幸的是,WingIDE目前还无法嵌入IPython。

答案 4 :(得分:0)

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