当 python 在 pygtk 信号处理回调的中间引发异常时,异常被 gtk 主循环捕获,打印它的值并且主循环继续,忽略它。
如果你想用 pdb (python -m pdb myscript.py) 之类的东西进行调试,你希望当异常发生时 PDB 跳上它,你就可以开始调试了。正因为如此,这是不可能的。
那我该如何调试 pygtk 程序呢?
您不能让 pdb 跳转到异常,因为异常被 gtk 的主循环捕获并静音。
其中一种选择是使用pdb.set_trace()
:
import pdb
pdb.set_trace()
请参阅pdb 文档。
或者,您可以只使用Winpdb:
它是一个独立于平台的图形 GPL Python 调试器,支持通过网络进行远程调试、多线程、命名空间修改、嵌入式调试、加密通信,并且比 pdb 快 20 倍。
特征:
(来源:winpdb.org)