我如何在源代码中找到仍在等待的被破坏线程
How do I find in the source code a destroyed thread that were still waiting?
我正在尝试确切确定在关闭应用程序时被销毁但仍在等待的线程的文件。调试消息显示此消息:
qthread(0x17AA2EA0)QWAITCONDITION:在线程仍在 等待
可以在源代码中中获取(这是我未写的大型代码库),因此我可以在不再需要时尝试正确修复和退出它?
我知道,在VS中,您可以控制 f进行搜索。您可以在该消息中搜索某些内容,例如Qthread(0x17AA2EA0)。如果您可以使用代码,并且此等待条件在代码范围内,则您很可能能够找到它。
我认为对此没有一个简单的解决方案。我解决这样一个问题的解决方案是:
- 搜索所有
QWaitCondition
变量/类成员 - 搜索所有创建线程的类并输出带有线程ID的调试消息(即在构造函数中)
- 在每个类Destructor中包含一个带有线程ID的调试消息
然后,您知道创建了哪些线程以及创建的线程。当然,我正在使用线程池,这要困难得多。
相关文章:
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在cuda线程之间共享大量常量数据
- C++在不同线程中改变向量
- 如何在多线程中正确使用unique_ptr进行多态性?
- 虚假唤醒是否会解锁所有等待线程,甚至是不相关的线程?
- sigwait() 在多线程程序中不起作用
- C++线程:如何在一个线程仍在运行时阻止另一个线程执行 (Win32)
- 如何制作一个只能在一个线程上同时执行的函数?
- 成员变量在多线程 C++ 时自行更改
- 通过插槽和信号在不同线程中的两个qt对象之间进行通信
- 如何检索指向在单独线程上运行的函数的移动指针?
- 如何正确取消析构函数中的 Boost deadline_timer(在多线程环境中)?
- 互斥,Windows 10,c ++,在一个线程上获取,在另一个线程上发布
- 为什么 beginthreadex 线程参数变量在父线程中没有更新
- 使用 std::atomic 标志和 std::condition_variable 在工作线程上等待
- 在退出进程时等待线程完成
- 在纯虚拟类的析构函数中等待线程死亡会导致运行时错误
- Qt5中存在哪些同步原语,允许我在单个线程中等待信号到达
- 如何在消费者线程中组织等待来自主线程的数据
- 如何等待线程仅在它已启动时才加入