У меня есть многопоточное приложение, которое я изначально разрабатывал с использованием Qt 4.6 и Qt Creator 2.2 (или, возможно, 2.1), а недавно я обновился до Qt 4.7 и Qt Creator 2.3 (это все в Windows). Ранее я проверял порядок уничтожения различных потоков и объектов в моем приложении, помещая вызовы qCritical()
в деструкторы. Это легко подтвердило, что все было уничтожено в порядке, который я ожидал.
Однако после обновления до более новых версий я заметил, что сообщения не всегда отображаются на панели «Вывод приложения» в Qt Creator. Порядок сообщений всегда правильный, но в какой-то случайный момент вывод просто перестает отображаться. Иногда вывод не отображается вообще. Тем не менее, я могу подтвердить, что объекты уничтожаются, и мое приложение завершается без ошибок.
Проблема по-прежнему возникает, когда я использую qDebug()
для отображения сообщений, но все отображается нормально, если вместо этого я использую простой printf()
. Что может быть причиной остановки вывода приложения до завершения очистки приложения? Есть ли изменения в новейших версиях Qt или Qt Creator, которые изменяют поведение этих функций при вызове из деструктора?