Russian Qt Forum
Ноябрь 23, 2024, 04:02
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Установка, сборка, отладка, тестирование
>
Отчет о падении программы.
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Отчет о падении программы. (Прочитано 8603 раз)
Sergeich
Гость
Отчет о падении программы.
«
:
Март 29, 2007, 02:31 »
Задача такая:
Есть кутевая программа с отладочной информацией, к-ая установлена у нескольких тестеров под win и linux. Естественно
она иногда падает. Надо написать кутевый класс, к-ый отслеживает падения средствами ОС, собирает информацию о крэше ( стек вызовов в момент падения и т.д. ) и делает с этой инфой что-то полезное: например пишет в лог или отсылает по мылу разработчику.
Под линух схема более менее понятная: устанавливаем обработчик сигналов, в нем вызываем gdb и юзаем его команды (backtrace и т.д.). А что делать под виндой? Понятно, что там должно быть что-то похожее. У кого-нить есть какие-то идеи или наработки?
Записан
ashatilo
Гость
Отчет о падении программы.
«
Ответ #1 :
Март 31, 2007, 00:41 »
Ты какой компилятор используешь?
Если MSVC то используй Dr.Watson и WER (
http://www.microsoft.com/whdc/maintain/StartWER.mspx
)
В случае с GCC может помочь Dr.MinGW.
Записан
burunduk
Гость
Отчет о падении программы.
«
Ответ #2 :
Апрель 06, 2007, 10:14 »
я у себя делал так:
в main в самом начале писал вот эти две строчки:
_CrtSetReportHook(MyReportHook);
SetUnhandledExceptionFilter(MyFilter);
MyFilter - пишет в лог информацию о креше (стека вызовов нет) + системную информацию о компьютере
архивируются все файлы *.log и отправляются по почте
вместо стека вызовов пишу все вызовы в trace.log
есть еще отдельный класс для уведомления о событиях в программе через jabber
если что-то интересно, могу прислать куски кода
Записан
Sergeich
Гость
Отчет о падении программы.
«
Ответ #3 :
Май 25, 2007, 03:46 »
2 burunduk: Спасибо за инфу
Нашел как получить стек вызовов в винде:
http://www.codeproject.com/threads/StackWalker.asp
Правда, сцуко, с юникодом не дружит, пришлось #undef UNICODE вставлять. А так вроде работает, даже номера строк в коде выдает.
Счас попробую в ExceptionFilter вставить.
добавлено спустя 1 час 28 минут:
Работает
Осталось сделать реализацию под линух. Да, кстати, не догнал нах юзать _CrtSetReportHook: без него все прекрасно работает.
Записан
burunduk
Гость
Отчет о падении программы.
«
Ответ #4 :
Май 25, 2007, 08:51 »
можно забить на него
я вставлял его для того чтобы в дебаг версии Q_ASSERTы тоже перехватывались. И подозреваю что это только для win
Цитата: "Sergeich"
Работает
Осталось сделать реализацию под линух. Да, кстати, не догнал нах юзать _CrtSetReportHook: без него все прекрасно работает.
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Отчет о падении программы.
«
Ответ #5 :
Май 25, 2007, 18:00 »
ИМХО такой подход - путь в никуда.
Крашрепорт, как правило, ничем не помогает разработчику, тем более юзеру.
По моему, надо вещь под дебагером нормально вылизать сначала, на тех примерах, на которых у тестеров происходит падение.
Ибо такого рода репорты - лишний геморой для всех без исключения.
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
burunduk
Гость
Отчет о падении программы.
«
Ответ #6 :
Май 25, 2007, 22:44 »
когда тестеров просто нету такой подход лучше чем ничего;
по детальным логам уже можно локализовать проблему, а дальше даже если не помогло - можно самим потестить данный участок кода
Цитата: "Racheengel"
ИМХО такой подход - путь в никуда.
Крашрепорт, как правило, ничем не помогает разработчику, тем более юзеру.
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Отчет о падении программы.
«
Ответ #7 :
Май 25, 2007, 22:48 »
Так как раз тестеры таки и есть
Цитировать
Есть кутевая программа с отладочной информацией, к-ая установлена у нескольких тестеров
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Sergeich
Гость
Отчет о падении программы.
«
Ответ #8 :
Май 25, 2007, 23:40 »
Пардон, недосказал, нормальных тестеров как раз и нету
В моем случае есть несколько пользоватей, к-ые работают с прогой в производственном режиме. Прога обрабатывает очень большие объемы данных, как правило около сотни гигов, иногда терабайты, и соответсвенно работает несколько часов (суток). Так что воспроизведение багов довольно проблематично.
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Отчет о падении программы.
«
Ответ #9 :
Май 26, 2007, 00:46 »
а, вот даже как...
ну тогда конечно, хотя бы с дампом...
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...