в файловом логе же вероятно не все последние сообщения будут записаны? Что-то так и останется в stdout?
а если вылетает по ошибке доступа к памяти, ну вообщем я сейчас хочу понять, пропущу ли я весь вывод лога или есть какие-то пути чтоб лог был записан полностью
у меня сделано подобно как у тебя. Только в своем messageHandler сообщения отправляются в очередь потока. Там пишет все в файл. Делаю перехват сигнала SIGSEGV в своем обработчике сигнала signalHandler. Там пишу лог и нормально завершаю приложение. При завершении приложения я завершаю поток логгера для Винды так: mThread->wait(200); // тут могут придти еще пару новых сообщений от логера, немного жду mThread->quit(); // выход и блокировка получений новых событий mThread->wait(); // тут обрабатываю оставшиеся сообщения Для винды почему-то надо еще делать wait(200), иначе последние сообщения теряются, в отличии от линукса.
а если fflush делать, чтоб не ждать? Вроде интересно, а почему в поток вынесена эта часть?
Компилятор [вернее, CRT] ставит SEH-обработчик и вызывает из него обработчик сигнала
да, забыл упомянуть у меня mingw32
Это что-то меняет?)
Обсуждают сегодня