如何调试PYGTK程序

7 python gtk debugging pygtk

当python在处理回调的pygtk信号中间引发异常时,gtk主循环捕获异常,打印其值并且主循环继续,忽略它.

如果你想用pdb(python -m pdb myscript.py)之类的东西进行调试,你想要在异常发生的时候PDB跳过它并且你可以开始调试.因为这是不可能的.

我怎么能调试pygtk程序呢?

nos*_*klo 5

您无法使pdb跳转到该异常,因为gtk的主循环捕获了该异常并将其静音。

一种替代方法是使用pdb.set_trace()

import pdb
pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

请参阅pdb文档

或者,您可以只使用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