7

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

如果你想用 pdb (python -m pdb myscript.py) 之类的东西进行调试,你希望当异常发生时 PDB 跳上它,你就可以开始调试了。正因为如此,这是不可能的。

那我该如何调试 pygtk 程序呢?

4

1 回答 1

5

您不能让 pdb 跳转到异常,因为异常被 gtk 的主循环捕获并静音。

其中一种选择是使用pdb.set_trace()

import pdb
pdb.set_trace()

请参阅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

于 2009-05-27T16:21:23.957 回答