Qt中的线程生成时是否有可能记录线程调用堆栈

时间:2019-03-07 13:23:06

标签: multithreading qt debugging crash qthread

我们有一个基于遗留控件的Qt应用程序,如果我们将其整夜运行,则线程数将超过3000,然后进行操作,它将崩溃或有时我们已经发现崩溃。

我试图将日志放在可能的线程生成中,但是仍然没有任何线索表明哪个代码生成了这些线程。以下是我通过中断执行采取的调用堆栈。

QT Thread call-stack all thread seems waiting

从这个调用栈中,我无法识别创建线程的目的。我事件试图通过在线程上调用Qt(Is there a portable way to give thread name with Qt?)的setObjectName()来给线程命名,但是在发布版本中没有捕获到该名称,对于我们来说,在发布版本中工作目前仅是一个选项。

那么,只要有线程在应用程序中产生,是否有可能记录调用堆栈?挂钩createThread是可行的方法吗?虽然我以前从未尝试过钩子。还是可以捕获所有线程的启动信号?

请提出建议。

0 个答案:

没有答案