Python对象检查器?

问题描述 投票:2回答:5

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

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

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

有任何想法吗 ?

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

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

python debugging introspection
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或更高版本。

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

Screenshot (来源:winpdb.org


3
投票

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

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

import pdb;pdb.set_trace() 

你会得到stdout的提示。


1
投票

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


1
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.