我有一个python脚本,我在终端上使用python main.py调用.它启动一个正确执行的Qt-GUI,并在关闭GUI时终止.
但是,有时会打印最后一条调试消息“over and out”,但脚本本身不会终止. ctrl c,ctrl d和ctrl z都不会对执行产生任何影响.在我看来,如果在程序内部抛出异常(并被GUI捕获),就会发生这种情况.
我不知道如何调试它,因为它显然不会发生在GUI本身.我该如何调试并查明,我做错了什么?
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
form = MainGui()
form.show()
app.exec_()
print "over and out"
编辑:在我看来好像有一些线程仍然活跃在最后.但是,我并没有真正使用线程(我不知道Qt在内部做什么……).有没有办法在最后查看所有正在运行的线程?
编辑2:哦,我的上帝.解决方案只是重新启动我的系统.不知何故,我的操作系统做了一些疯狂的事情,并阻止脚本终止.
解决方法:
“ctrl c,ctrl d和ctrl z都不会对执行产生任何影响.”
将这些代码行添加到程序的标题中,ctrl c将退出它.
import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
如果你想在程序遇到异常时自动进入pdb调试器,只需执行以下操作:
import sys
def excepthook(type_, value, tb):
import pdb
import trace