这篇文章上次修改于 256 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
Qt 定时器一个烦人的地方就是创建定时器和释放定时器要在同一线程,否则就会报如下错误:
QObject::~QObject: Timers cannot be stopped from another thread
QObject::~killTimer: Timers cannot be stopped from another thread
报错就报错吧,关键是没有任何上下文信息,如果你的程序里有很多地方在用定时器,排查起来就很难了。今天又遇到了这个问题,排查了很久也没找到是哪里报出来的。
正当一筹莫展的时候,突然想到用 Qt 源码调试根据堆栈信息或许能找到出错的源头。于是上网搜了下怎么调试 Qt 源码,只需两个步骤即可:
- 安装 Qt 时选择了源码
- 打开
Qt Creator->Tools->Options->Debugger->General->Source Paths Mapping
,点击Add Qt sources...
按钮,选择 Qt 源码目录即可
再次以调试模式启动程序,在合适的地方打下断点,发现已经可以进入 Qt 源码进行调试了。
源码都能调试了,这个问题就已经不是问题了,三下五除二就找出报错的地方:-)。
没有评论