Позвольте мне сказать вам кое-что:
Однажды я разработал консольное приложение c ++ для Linux. Во время работы приложения оно считывало файл и начинало обрабатывать некоторую логику, распечатывая некоторые сообщения о состоянии. Когда я запустил это приложение, вывод был в порядке. Поэтому для удобной отладки я решил запустить приложение так:
./a.out |& tee log
Эта команда перенаправляет стандартный вывод (может быть и стандартную ошибку, которую я не помню) в файл с именем "log". Поэтому, когда я запустил эту опцию, я увидел, что она записывает в файл журнала точно так же, как в std out, только есть некоторые смещения, подобные этому:
в стандартный вывод - желаемый выход
A
operation 1 success
B
operation 2 success
C
operation 3 success
D
operation 4 success
в файле журнала - вывод со смещением (это не правильно)
A
B
C
D
operation 1 success
operation 2 success
operation 3 success
operation 4 success
Полагаю, ваша проблема в этом ... Я посмотрел на QDebug и не видел ни одной функции, освобождающей буфер (что-то вроде операции, называемой flush). Поэтому я рекомендую вам не тратить время на решение этой небольшой проблемы (я также считаю, что Qt Creator 2.0 выпущен как бета-версия и может показаться ошибкой) и использовать один из следующих вариантов:
qFatal()
qCritical()
qWarning()
QMessageBox
Я лично использую QMessageBox :: about для отладки, так как вы можете остановить просмотр и прочитать значение в очень полезных местах, которые с отладчиком вы не можете (я имею в виду, что вы можете, но вы не можете видеть текущее состояние Ваше приложение GUI как отладчик взяло под свой контроль).
Надежда помогает.