Гарантированно ловить вылеты
От: P_YegreS_P Беларусь www.orienteering.bsu.by
Дата: 21.01.11 14:35
Оценка:
Добрый день.

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

OS Windows.
Native C++.
Используем SetUnhandledExceptionFilter для формирования крэш дампов.
Выставлены опции компиляции Enable C++ Exceptions = Yes With SEH Exceptions (/EHa)

Ловится почти все
— стандартные throw;
— Разыменования нулевых указателей
*(char*) = 0

-Ошибки аллокации памяти и т.д. и т.п.
При этом вызывается наша функция обработки. (Она запускает отдельный процесс, который сохраняет дамп, отправляет его на сервер, бла,бла,бла...)

Понятно, что определить моменты которые не ловятся, значительно сложнее, но удалось придумать минимальный пример (С++):
__asm mov esp, -1
__asm jmp esp


На WinXP приложение просто схлопывается, без вывода чего-либо.
На Win7 выводится диалог о поиске возможных вариантов решения проблемы. Далее предлагается подключиться отладчиком.

Уж очень хочется отлавливать всё...


Смотрели в сторону
RegisterApplicationRecoveryCallback — пока не помогло. (Источник ссылки)

Может кто-нибудь сталкивался?

P.S. Гугл пока не помогает

Заранее спасибо,
с уважением,
Сергей Писарчик.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.