Готовь сани летом
September 4th, 2010 Begemot Posted in Программирование
Стукнуло мне что-то тут в голову изучить вопрос глобальной обработки ошибок – создания минидампа и т.д. Что бы если где-то что-то там у них того, можно было попросить информацию.
Про то что в wxWidgets есть родные средства я знал, но хотелось полностью готового и универсального (я еще пишу на Qt и поддерживаю MFC) решения. Начал искать.
Сначала прочел все четыре части XCrashReport, поимел общее представление и даже нашел как прикрутить это дело к wxWidgets (пришлось заходить сзади). Но оказалось что ихний exe для отсылки информации, надо пересобирать, а сделать это в 2008 студии не представляется возможным с разумными усилиями. Автор уже давно в принципе сам все поправил и значительно улучшил, но теперь хочет за современную версию $80.
Решил выкинуть их ехе который занимается отправкой, и просто генерить файлы. Потом решил, что я вообще могу выкинуть почти весь их код и использовать стандартную MiniDumpWriteDump. И вот тут я наконец решил посмотреть что есть готового в wxWidgets.
Оказалось есть, и причем неплохое – wxDebugReport. Генерит минидамп, xml со вспомогательной информацией, позволяет включить другие файлы, показывает диалог и даже может вроде их куда-то аплоадить (не тестил), жаль только по е-майл не может послать, что плохо.
Документация понятная, есть самп – еще более понятный. Добавляется к себе это чудо парой строчек кода + функция генерации репорта, которую можно взять в сампле и доработать. В общем, пару часов и у вас как в лучших домах Лондона и Парижа.
Но за все надо платить, в данном случае цена – 300кб, для меня многовато, но фиг с ним.
Учтите что нужно добавить в проект либы wxmsw29u_qa.lib, wxbase29u_xml.lib и wxexpat.lib. Еще нужно включить генерацию map и pdb файлов для релизной версии программы. Эти файлы нужно хранить для каждого релиза, вы же конечно используете version contorol system?
September 5th, 2010 at 11:38 am
Николай, извини конечно если не в тему. Посмотрел твой Flashnotes, приятная программа, но вопрос в другом: ты используешь “Esc” для сворачивания в трей, ты не мог бы вкратце рассказать каким образом прошел сей трюк, т.к. у меня не получилось. М.б дело в том, что я использую wx 2.8 (ты вроде транковую)? И еще один момент: вроде транк стал более-менее, хочу на него перейти напиши как ты его “худел”, вернее не его, а готовые бинари и соответсвенно занимаемое место в памяти, т.к. когда я в последгий раз его юзал был полный 3.14ц в этом плане.
September 5th, 2010 at 12:02 pm
Тебя интересует как ловить еск или как сворачивать в трей ?:) на 2.8 у Flashnote около года жила, там тоже все работала.
Сейчас я юзаю 2.9.1, не совсем транк, ничего я специально не делал… помоему при переходе на с 2.8 у меня получился бинарник 3 вместо 2.2 (ну или где-то рядом), сейчас уже 4… А что у тебя так такого страшного нашлось? я про “полный 3.14ц в этом плане.”
September 5th, 2010 at 12:19 pm
lol, конечно как использовать Escape, сейчас использую “Alt+H”, но все-таки Esc привычней, но ловит только сочетание.
А про транк я же написал: “как ты его “худел”, вернее не его, а готовые бинари и соответсвенно занимаемое место в памяти”.
Т.е. размер ‘бинаря и место в памяти, или ты этим вопросом (оптимизация) не озадачивался? Я понимаю, что винты большие, канал толстый, оперативка дешевая, но все-таки.
Я уже как-то “ругался” по этому поводу: http://buffer-overflow.blogspot.com/2009/12/wxwidgets-29.html
September 5th, 2010 at 12:35 pm
Я конекчу ко всем контролам на форме обработчик wxEVT_KEY_DOWN, и в нем уже ловлю события. (если нужен код пиши – запощю)
Да я тоже написал, что ничего для оптимизации не делал. так как не знаю что можно сделать 🙂
September 5th, 2010 at 12:59 pm
Короче я ССЗБ, я зачем-то (как и остальные хоткеи) через акселераторы пытался :3