Название: Обработка случая "приложение неожиданно завершило работу". Отправлено: Smogg от Февраль 17, 2017, 15:45 Юзер прислал вот такой скрин. Как сделать так, чтоб можно было определить, на какой строчке кода произошел крах?
Название: Re: Обработка случая "приложение неожиданно завершило работу". Отправлено: gil9red от Февраль 17, 2017, 15:51 Хотя бы добавить логирование работы проги в файл :)
Название: Re: Обработка случая "приложение неожиданно завершило работу". Отправлено: Пантер от Февраль 17, 2017, 16:06 Подробное логгирование. Если не поможет, собираешь дебаг версию и просишься подебажиться у клиента.
Название: Re: Обработка случая "приложение неожиданно завершило работу". Отправлено: Smogg от Февраль 17, 2017, 16:24 Подробное логгирование. Если не поможет, собираешь дебаг версию и просишься подебажиться у клиента. Проблема с логированием в том, что я уже что считаю нужным логирую. А "неожиданный крах" - это ошибка логики, т.е. что-то такое, о чем я просто не догадываюсь. А как логировать то, о чем не имею понятия? А что, так можно - удаленно дебажиться? И все таки, очень бы хотелось этого избегать - дергать юзера. Мало ли что для чего он использует свою машину и по какой причине он мне запретит на ней хозяйничать. Название: Re: Обработка случая "приложение неожиданно завершило работу". Отправлено: Пантер от Февраль 17, 2017, 16:30 > А "неожиданный крах" - это ошибка логики
С чего это вдруг? Может, два раза что-то удаляется. А может пытаешься разименовать нулевой указатель. А может память портишь где-то. Профилируй свою прогу, пиши тесты. Название: Re: Обработка случая "приложение неожиданно завершило работу". Отправлено: Smogg от Февраль 17, 2017, 16:48 У меня клиент для сервера.
У всех все нормально, а один маргинал - оригинальничает и говорит, что крашиться рандомно через 3-30 минут. И шлет скрины то с таймаутом, то сразу с крахом... Поэтому и хочеться узнать, как бы в С++ засунуть то, что работает из коробки в C# - при необработанном исключении открывается окошка дефолтного обработчика, где указывается причина и/или конкретная строчка кода. Название: Re: Обработка случая "приложение неожиданно завершило работу". Отправлено: ssoft от Февраль 17, 2017, 17:12 Анализируйте crash dump'ы, которые пользователь должен прислать.
В линуксе запись дампа можно инициировать программно для приложения, или с командной строки для всех приложений. Код: ulimit -c unlimited Код
В Windows не знаю, но что-то подобное имеется. Название: Re: Обработка случая "приложение неожиданно завершило работу". Отправлено: qate от Февраль 17, 2017, 17:54 В линуксе запись дампа можно инициировать программно для приложения, или с командной строки для всех приложений. если в системе лимитами не зарезано или systemd не дурит а так да - собирать релиз с отдельными дебуг символами(их юзеру не поставлять) как это делать в венде не знаю, но можно почитать тут http://accu.org/index.php/journals/1412 Название: Re: Обработка случая "приложение неожиданно завершило работу". Отправлено: panAlexey от Февраль 20, 2017, 10:06 На хабре рекламируется PVS студия - статический анализатор кода.
Может им пройтись? Название: Re: Обработка случая "приложение неожиданно завершило работу". Отправлено: ssoft от Февраль 20, 2017, 12:08 На хабре рекламируется PVS студия - статический анализатор кода. Может им пройтись? Можете и пройтись). Только нужно понимать, какой эффект от какого инструмента требуется получить. Явные и возможные описки и небрежности он, конечно, найдет. А вот утечки памяти или алгоритмические ошибки, тут отладчик и динамический анализатор нужен, и crash dump). Название: Re: Обработка случая "приложение неожиданно завершило работу". Отправлено: panAlexey от Февраль 20, 2017, 15:52 На хабре рекламируется PVS студия - статический анализатор кода. Может им пройтись? Можете и пройтись). Только нужно понимать, какой эффект от какого инструмента требуется получить. Явные и возможные описки и небрежности он, конечно, найдет. А вот утечки памяти или алгоритмические ошибки, тут отладчик и динамический анализатор нужен, и crash dump). Лучше пройтись :) Название: Re: Обработка случая "приложение неожиданно завершило работу". Отправлено: twp от Февраль 21, 2017, 21:45 Поэтому и хочеться узнать, как бы в С++ засунуть то, что работает из коробки в C# - при необработанном исключении открывается окошка дефолтного обработчика, где указывается причина и/или конкретная строчка кода. Google Breakpad (http://maxsavenkov.livejournal.com/189460.html) Название: Re: Обработка случая "приложение неожиданно завершило работу". Отправлено: Racheengel от Февраль 22, 2017, 00:44 Google Breakpad (http://maxsavenkov.livejournal.com/189460.html) +1 |