C++ 为什么不';当从析构函数调用时,qCritical或qDebug是否工作?

C++ 为什么不';当从析构函数调用时,qCritical或qDebug是否工作?,c++,debugging,qt,qt-creator,destructor,C++,Debugging,Qt,Qt Creator,Destructor,我有一个多线程应用程序,我最初是使用Qt 4.6和Qt Creator 2.2(或者可能是2.1)开发的,最近我升级到Qt 4.7和Qt Creator 2.3(都在Windows中)。我之前一直在通过在析构函数中调用来测试应用程序中各种线程和对象的销毁顺序。它很容易证实,东西正按照我预期的顺序被销毁 但是,升级到较新版本后,我注意到消息并不总是显示在Qt Creator中的应用程序输出面板上。消息的顺序总是正确的,但在某个随机点,输出就停止显示。有时根本不显示输出。尽管如此,我可以确认对象正在

我有一个多线程应用程序,我最初是使用Qt 4.6和Qt Creator 2.2(或者可能是2.1)开发的,最近我升级到Qt 4.7和Qt Creator 2.3(都在Windows中)。我之前一直在通过在析构函数中调用来测试应用程序中各种线程和对象的销毁顺序。它很容易证实,东西正按照我预期的顺序被销毁

但是,升级到较新版本后,我注意到消息并不总是显示在Qt Creator中的应用程序输出面板上。消息的顺序总是正确的,但在某个随机点,输出就停止显示。有时根本不显示输出。尽管如此,我可以确认对象正在被销毁,并且我的应用程序无误退出


当我使用显示消息时,问题仍然存在,但是如果我改用一个简单的
printf()
,一切都会显示得很好。在应用程序完成清理之前,应用程序输出停止的原因可能是什么?Qt或Qt Creator的最新版本是否发生了变化,从而改变了从析构函数内部调用这些函数时的行为方式?

因为qDebug与QApplication交互,现在可能是在应用程序的所有其他部分之前销毁了其中的一部分。可能是。
但是,请尝试手动销毁对象,然后才调用QApplication::exit()

你能添加你的代码吗?如果从cmd.exe运行应用程序,是否也会发生同样的情况?@Styne666:我将尝试提取一小段代码来重现问题。内容太多,无法按原样发布。