我如何在源代码中找到仍在等待的被破坏线程

How do I find in the source code a destroyed thread that were still waiting?

本文关键字:在等待 线程 源代码      更新时间:2023-10-16

我正在尝试确切确定在关闭应用程序时被销毁但仍在等待的线程的文件。调试消息显示此消息:

qthread(0x17AA2EA0)QWAITCONDITION:在线程仍在 等待

可以在源代码中中获取(这是我未写的大型代码库),因此我可以在不再需要时尝试正确修复和退出它?

我知道,在VS中,您可以控制 f进行搜索。您可以在该消息中搜索某些内容,例如Qthread(0x17AA2EA0)。如果您可以使用代码,并且此等待条件在代码范围内,则您很可能能够找到它。

我认为对此没有一个简单的解决方案。我解决这样一个问题的解决方案是:

  • 搜索所有QWaitCondition变量/类成员
  • 搜索所有创建线程的类并输出带有线程ID的调试消息(即在构造函数中)
  • 在每个类Destructor中包含一个带有线程ID的调试消息

然后,您知道创建了哪些线程以及创建的线程。当然,我正在使用线程池,这要困难得多。