Готовь сани летом

September 4th, 2010 Begemot Posted in Программирование

Стукнуло мне что-то тут в голову изучить вопрос глобальной обработки ошибок – создания минидампа и т.д. Что бы если где-то что-то там у них того, можно было попросить информацию.

Про то что в wxWidgets есть родные средства  я знал, но хотелось полностью готового и универсального (я еще пишу на Qt и поддерживаю MFC) решения. Начал искать.

Сначала прочел все четыре части XCrashReport, поимел общее представление и даже нашел как прикрутить это дело к wxWidgets (пришлось заходить сзади). Но оказалось что ихний exe для отсылки информации, надо пересобирать, а сделать это в 2008 студии не представляется возможным с разумными усилиями. Автор уже давно в принципе сам все поправил и значительно улучшил, но теперь хочет за современную версию $80.

Решил выкинуть их ехе который занимается отправкой, и просто генерить файлы. Потом решил, что я вообще могу выкинуть почти весь их код и использовать стандартную MiniDumpWriteDump. И вот тут я наконец решил посмотреть что есть готового в wxWidgets.

Оказалось есть, и причем неплохое – wxDebugReport. Генерит минидамп, xml со вспомогательной информацией, позволяет включить другие файлы, показывает диалог и даже может вроде их куда-то аплоадить (не тестил), жаль только по е-майл не может послать, что плохо.

image

Документация понятная, есть самп – еще более понятный. Добавляется к себе это чудо парой строчек кода + функция генерации репорта, которую можно взять в сампле и доработать. В общем, пару часов и у вас как в лучших домах Лондона и Парижа.

Но за все надо платить, в данном случае цена – 300кб, для меня многовато, но фиг с ним.

Учтите что нужно добавить в проект либы wxmsw29u_qa.lib, wxbase29u_xml.lib и wxexpat.lib. Еще нужно включить генерацию map и pdb файлов для релизной версии программы. Эти файлы нужно хранить для каждого релиза, вы же конечно используете version contorol system?


Если пост полезен для вас вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.

Related:

5 Responses to “Готовь сани летом”

  1. Николай, извини конечно если не в тему. Посмотрел твой Flashnotes, приятная программа, но вопрос в другом: ты используешь “Esc” для сворачивания в трей, ты не мог бы вкратце рассказать каким образом прошел сей трюк, т.к. у меня не получилось. М.б дело в том, что я использую wx 2.8 (ты вроде транковую)? И еще один момент: вроде транк стал более-менее, хочу на него перейти напиши как ты его “худел”, вернее не его, а готовые бинари и соответсвенно занимаемое место в памяти, т.к. когда я в последгий раз его юзал был полный 3.14ц в этом плане.

  2. Тебя интересует как ловить еск или как сворачивать в трей ?:) на 2.8 у Flashnote около года жила, там тоже все работала.

    Сейчас я юзаю 2.9.1, не совсем транк, ничего я специально не делал… помоему при переходе на с 2.8 у меня получился бинарник 3 вместо 2.2 (ну или где-то рядом), сейчас уже 4… А что у тебя так такого страшного нашлось? я про “полный 3.14ц в этом плане.”

  3. lol, конечно как использовать Escape, сейчас использую “Alt+H”, но все-таки Esc привычней, но ловит только сочетание.
    А про транк я же написал: “как ты его “худел”, вернее не его, а готовые бинари и соответсвенно занимаемое место в памяти”.
    Т.е. размер ‘бинаря и место в памяти, или ты этим вопросом (оптимизация) не озадачивался? Я понимаю, что винты большие, канал толстый, оперативка дешевая, но все-таки.
    Я уже как-то “ругался” по этому поводу: http://buffer-overflow.blogspot.com/2009/12/wxwidgets-29.html

  4. Я конекчу ко всем контролам на форме обработчик wxEVT_KEY_DOWN, и в нем уже ловлю события. (если нужен код пиши – запощю)

    Да я тоже написал, что ничего для оптимизации не делал. так как не знаю что можно сделать 🙂

  5. Короче я ССЗБ, я зачем-то (как и остальные хоткеи) через акселераторы пытался :3