我们有一个基于遗留控件的Qt应用程序,如果我们将其整夜运行,则线程数将超过3000,然后进行操作,它将崩溃或有时我们已经发现崩溃。
我试图将日志放在可能的线程生成中,但是仍然没有任何线索表明哪个代码生成了这些线程。以下是我通过中断执行采取的调用堆栈。
从这个调用栈中,我无法识别创建线程的目的。我事件试图通过在线程上调用Qt(Is there a portable way to give thread name with Qt?)的setObjectName()来给线程命名,但是在发布版本中没有捕获到该名称,对于我们来说,在发布版本中工作目前仅是一个选项。
那么,只要有线程在应用程序中产生,是否有可能记录调用堆栈?挂钩createThread是可行的方法吗?虽然我以前从未尝试过钩子。还是可以捕获所有线程的启动信号?
请提出建议。