Russian Qt Forum
Ноябрь 25, 2024, 15:47
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Отловить вылет программы
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Отловить вылет программы (Прочитано 4579 раз)
ecspertiza
Супер
Offline
Сообщений: 1053
С уважением, мастер конфетного цеха!
Отловить вылет программы
«
:
Февраль 23, 2013, 18:35 »
Для начала всех с праздником
Подтолкните пожалуйста меня на мысль. Есть софт кроссплатформеный, хочется добавить в него такую фичу, если вдруг по каким то причинам софт упал, сформировать некий дамп типа
1. Класс\метод где упал софт.
2. Какова причина ну например деление на 0 или ошибка сегментации.
может что то еще. Естественно хочется ловить это все глобально, есть ли варианты для решения такой задачи, с ходу что то в голову ничего не приходит ?
Записан
Bepec
Гость
Re: Отловить вылет программы
«
Ответ #1 :
Февраль 23, 2013, 19:04 »
Говорю о Windows!
Собственно для такой ситуации имеется вроде решение аля запись дампа памяти и отправки разработчику. Этим же кроссплатформенно вроде занимается библиотека CrashReport, но у меня не получилось её приструнить - нехватило времени.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Отловить вылет программы
«
Ответ #2 :
Февраль 24, 2013, 08:51 »
В Mac OSX это делается автоматически - и очень хорошо. Симитируйте краш и посмотрите CrashReport - отпадет желание "лезть с грыжей на танк"
Опять у Вас какие-то "задачи обслуживания"
Записан
ecspertiza
Супер
Offline
Сообщений: 1053
С уважением, мастер конфетного цеха!
Re: Отловить вылет программы
«
Ответ #3 :
Февраль 24, 2013, 13:49 »
Дамп памяти это конечно хорошо, но лично мне он мало о чем говорит, может я не настолько хорошо его понимаю, но когда идет список hex кода и мол приложение упало в QtNetwork.dll в 0x73dc3 вообще ничего не говорит
Сидел я значит вчера и игрался в Starcraft 2 ,что то наделал там и он у меня упал, после падения появилось окошко, с надписью приложение упало при работе с OpenGL бла бла в такой то процедуре и галочка отправить это разработчику или нет. И я задумался софт вроде как делаем публичный используется на множестве компьютеров, конфигураций естественно тысячи, где то может ,что то не так сработать и софт упадет. Так вот я и задумался что было бы здорово иметь возможность отловить именно место падения софта, то есть имя процедуры может даже класс, естественно сопутствующую инфу и дать возможность юзверю отправить это дело разработчику. Ну по сути то ,что я увидел у Blizzard. И собственно говоря меня мучает вопрос как они это сделали, навряд ли каждую процедуру в try catch заключали.
Записан
Bepec
Гость
Re: Отловить вылет программы
«
Ответ #4 :
Февраль 24, 2013, 16:56 »
Дамп памяти по сути и есть программа, замершая в точке падения. Если корректное падение (т.е. стек не затёрт), то будет вам стек, порядок вызовов, вплоть до начала программы. А при наличии самого дампа можно пойти назад по шагам вроде, причём все переменные и прочая будут аналогичны как при падении.
PS сам снимал дампы, сам пытался открыть - почему то нет стандартных решений для просмотра дампов. Никак символьные файлы не цеплялись, а в ассемблере нифига непонятно
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Отловить вылет программы
«
Ответ #5 :
Февраль 24, 2013, 17:11 »
Цитата: ecspertiza от Февраль 24, 2013, 13:49
Дамп памяти это конечно хорошо, но лично мне он мало о чем говорит,
Как и мне и любому другому, а это просто значит что ничего хорошего в нем нет. У Вас чисто велосипедная идея, это давно есть, и прекрасно работает, и юзверь отправить может. Тем более странно что на Mac Вы работаете, неужели никогда не сталкивались
Записан
maxxant
Гость
Re: Отловить вылет программы
«
Ответ #6 :
Февраль 24, 2013, 19:12 »
именно кросплатформенно есть же
http://code.google.com/p/google-breakpad/
если что, есть краткое описание на русском:
http://lo-tips.blogspot.ru/2011/03/google-breakpad.html
Записан
ecspertiza
Супер
Offline
Сообщений: 1053
С уважением, мастер конфетного цеха!
Re: Отловить вылет программы
«
Ответ #7 :
Февраль 24, 2013, 22:08 »
Igors, на Mac , да, это сделано хорошо, но кабы хочется все платформы сразу и какую нибудь свою оболочку. За Google Breakpad спасибо, покурю, вроде ,что то похожее.
Записан
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...