如何调试PYGTK程序

7 投票
1 回答
2254 浏览
提问于 2025-04-15 11:51

当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)

撰写回答