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

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?

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