Сейчас обдумываю идею создания дампа падения (зависания) приложения. Пока используется класс формирующий .RPT файл с адресом падения приложения и стеком вызовов.
Суть такова: при падении приложения у клиента создается дамп, который автоматически высылается разработчику. Еще если у клиента возникает проблема с нашим приложением, клиент создает (одним нажатием кнопки ) дамп приложения и высылает нам. Так имея дамп нет необходимости воспроизводить проблему. Еще хотелось бы иметь систему автоматического разбора дампов, что бы не искать файлы нужного релиза вручную, а при загрузки дампа они автоматически подгружались.
Существуют, какие-либо библиотеки и/или коммерческие продукты позволяющие автоматизировать этот процесс? И как вы решаете эту проблему, что используете?
Y>Существуют, какие-либо библиотеки и/или коммерческие продукты позволяющие автоматизировать этот процесс? И как вы решаете эту проблему, что используете?
используем BugTrap от IntelleSoft смотри здесь
Здравствуйте, yuske, Вы писали:
Y>Суть такова: при падении приложения у клиента создается дамп, который автоматически высылается разработчику.
MiniDumpWriteDump()
Y> Еще хотелось бы иметь систему автоматического разбора дампов, что бы не искать файлы нужного релиза вручную, а при загрузки дампа они автоматически подгружались.
Это надо копать в сторону Symbol Server и Source Server
Symbol Server — это индексный каталог для dll и pdb
Source Server — это система, позволяющая писать и читать информацию об версиях исходных файлов в/из pdb
Здравствуйте, LMars, Вы писали:
LM>Здравствуйте, yuske, Вы писали:
Y>>Суть такова: при падении приложения у клиента создается дамп, который автоматически высылается разработчику.
LM>MiniDumpWriteDump()
Y>> Еще хотелось бы иметь систему автоматического разбора дампов, что бы не искать файлы нужного релиза вручную, а при загрузки дампа они автоматически подгружались.
LM>Это надо копать в сторону Symbol Server и Source Server LM>Symbol Server — это индексный каталог для dll и pdb LM>Source Server — это система, позволяющая писать и читать информацию об версиях исходных файлов в/из pdb
Да, про это я почитал, и суть как настроить и реализовать уловил. Но перед тем как самому заниматься реализацией этого функционала (тратить человеко-часы) хотелось бы посмотреть какие коммерческие системы существуют, возможно, проще купить. Ну или воспользоваться бесплатными библиотеками о которых писали выше.
И еще для меня важный вопрос: насколько это на практике помогает при отладки, кто что использует и используете ли вообще какую-то единую систему??? А если не используете то почему??? Т.е. стоит ли заниматься внедрением/разработкой системы создания и разбора дампов, и какие подводные камни встретятся???
Всем откликнувшимся огромное спасибо, ссылки действительно полезные
Здравствуйте, yuske, Вы писали:
Y>Да, про это я почитал, и суть как настроить и реализовать уловил. Но перед тем как самому заниматься реализацией этого функционала (тратить человеко-часы) хотелось бы посмотреть какие коммерческие системы существуют, возможно, проще купить. Ну или воспользоваться бесплатными библиотеками о которых писали выше.
Для реализации "Symbol Server" и "Source Server" есть Debugging Tools for Windows, тут уже ничего придумывать не надо.
А для отсылки дампов с компьютера пользователя и учета их на стороне разработчиков... не слышал я про такие системы.
У нас дампы с компьютера пользователя посылаются на e-mail (самописный классик).
На нашей стороне крутится сервис (самописный), который получает эти письма и создает WorkItem_ы в TFS.
Разработчики их потом анализируют.
Причем этот сервис умеет объединять одинаковый креши (по версии программы, месту падения и коду ошибки), что также облегчает нам жизнь.
Y>И еще для меня важный вопрос: насколько это на практике помогает при отладки,
Сложный вопрос.
Простейшие падения программы — очень хорошо помогает фиксить, особенно когда дамп создан с флагом MiniDumpWithIndirectlyReferencedMemory, тогда при дебаге дампа, можно смотреть значения некоторых переменных.
Иногда дамп создается криво и стек показывается неправильно.
Иногда по дампу видно, что происходит разыменование нулевого указателя... и вообщем-то все понятно... пиши проверку перед тем как разыименовывать! Но по логике программы нулевого указателя в этом иесте быть не должно! И вот такой креш понять сложнее
Y>Т.е. стоит ли заниматься внедрением/разработкой системы создания и разбора дампов ... ???
Но в целом овчинка стоит выделки! Без этой системы в серьезном приложении как без рук! После ее внедрения становится намного меньше проблем при общении с пользователями... упало — см. дамп... не надо писать какие-то логи... выяснять последовательность действий — смотришь дамп и имеешь подробную информацию о падении программы.
Здравствуйте, yuske, Вы писали:
Y>Сейчас обдумываю идею создания дампа падения (зависания) приложения. Пока используется класс формирующий .RPT файл с адресом падения приложения и стеком вызовов. Y>[...] Y>Существуют, какие-либо библиотеки и/или коммерческие продукты позволяющие автоматизировать этот процесс? И как вы решаете эту проблему, что используете?
Посмотри на Breakpad, он мультиплатформенный и используется, среди прочего, в Файрфоксе.