如何调试PYGTK程序
当Python在处理pygtk信号的回调函数时抛出一个异常,这个异常会被gtk的主循环捕获,然后打印出异常的内容,主循环会继续运行,完全不理会这个异常。
如果你想调试这个问题,比如使用pdb(命令是python -m pdb myscript.py),你希望在异常发生时,pdb能够立刻跳出来,让你开始调试。但因为这样做是不可能的。
那我该如何调试pygtk程序呢?
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)