Russian Qt Forum
Апрель 18, 2024, 04:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Обработка случая "приложение неожиданно завершило работу".  (Прочитано 7241 раз)
Smogg
Гость
« : Февраль 17, 2017, 15:45 »

Юзер прислал вот такой скрин. Как сделать так, чтоб можно было определить, на какой строчке кода произошел крах?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Февраль 17, 2017, 15:51 »

Хотя бы добавить логирование работы проги в файл Улыбающийся
Записан

Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Февраль 17, 2017, 16:06 »

Подробное логгирование. Если не поможет, собираешь дебаг версию и просишься подебажиться у клиента.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Smogg
Гость
« Ответ #3 : Февраль 17, 2017, 16:24 »

Подробное логгирование. Если не поможет, собираешь дебаг версию и просишься подебажиться у клиента.

Проблема с логированием в том, что я уже что считаю нужным логирую. А "неожиданный крах" - это ошибка логики, т.е. что-то такое, о чем я просто не догадываюсь. А как логировать то, о чем не имею понятия?

А что, так можно - удаленно дебажиться?

И все таки, очень бы хотелось этого избегать - дергать юзера. Мало ли что для чего он использует свою машину и по какой причине он мне запретит на ней хозяйничать.
« Последнее редактирование: Февраль 17, 2017, 19:52 от Smogg » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Февраль 17, 2017, 16:30 »

> А "неожиданный крах" - это ошибка логики

С чего это вдруг? Может, два раза что-то удаляется. А может пытаешься разименовать нулевой указатель. А может память портишь где-то. Профилируй свою прогу, пиши тесты.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Smogg
Гость
« Ответ #5 : Февраль 17, 2017, 16:48 »

У меня клиент для сервера.
У всех все нормально, а один маргинал - оригинальничает и говорит, что крашиться рандомно через 3-30 минут. И шлет скрины то с таймаутом, то сразу с крахом...

Поэтому и хочеться узнать, как бы в С++ засунуть то, что работает из коробки в C# - при необработанном исключении открывается окошка дефолтного обработчика, где указывается причина и/или конкретная строчка кода.
« Последнее редактирование: Февраль 17, 2017, 16:55 от Smogg » Записан
ssoft
Программист
*****
Offline Offline

Сообщений: 579


Просмотр профиля
« Ответ #6 : Февраль 17, 2017, 17:12 »

Анализируйте crash dump'ы, которые пользователь должен прислать.

В линуксе запись дампа можно инициировать программно для приложения, или с командной строки для всех приложений.

Код:
ulimit -c unlimited

Код
C++ (Qt)
   struct rlimit rlmt;
   const rlim_t my_process_dump_limit = 512*1024*1024; // 512 MB
   rlmt.rlim_cur = (rlim_t) my_process_dump_limit;
   rlmt.rlim_max = (rlim_t) my_process_dump_limit;
   setrlimit( RLIMIT_CORE, &rlmt );
   prctl( PR_SET_DUMPABLE, 1 );
 

В Windows не знаю, но что-то подобное имеется.
Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #7 : Февраль 17, 2017, 17:54 »

В линуксе запись дампа можно инициировать программно для приложения, или с командной строки для всех приложений.

если в системе лимитами не зарезано или systemd не дурит
а так да - собирать релиз с отдельными дебуг символами(их юзеру не поставлять)
как это делать в венде не знаю, но можно почитать тут http://accu.org/index.php/journals/1412
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #8 : Февраль 20, 2017, 10:06 »

На хабре рекламируется PVS студия - статический анализатор кода.
Может им пройтись?
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
ssoft
Программист
*****
Offline Offline

Сообщений: 579


Просмотр профиля
« Ответ #9 : Февраль 20, 2017, 12:08 »

На хабре рекламируется PVS студия - статический анализатор кода.
Может им пройтись?

Можете и пройтись).
Только нужно понимать, какой эффект от какого инструмента требуется получить.
Явные и возможные описки и небрежности он, конечно, найдет. А вот утечки памяти или алгоритмические ошибки, тут отладчик и динамический анализатор нужен, и crash dump).
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #10 : Февраль 20, 2017, 15:52 »

На хабре рекламируется PVS студия - статический анализатор кода.
Может им пройтись?

Можете и пройтись).
Только нужно понимать, какой эффект от какого инструмента требуется получить.
Явные и возможные описки и небрежности он, конечно, найдет. А вот утечки памяти или алгоритмические ошибки, тут отладчик и динамический анализатор нужен, и crash dump).
Мелкая описка может к большим непритностям привести.
Лучше пройтись Улыбающийся
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
twp
Гость
« Ответ #11 : Февраль 21, 2017, 21:45 »

Поэтому и хочеться узнать, как бы в С++ засунуть то, что работает из коробки в C# - при необработанном исключении открывается окошка дефолтного обработчика, где указывается причина и/или конкретная строчка кода.

Google Breakpad
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #12 : Февраль 22, 2017, 00:44 »


+1
Записан

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]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.148 секунд. Запросов: 23.