2010-08-31 2 views
2

MSDN describes UnhandledExceptionFilter: «Функция, определяемая приложением, которая передает необработанные исключения в отладчик, если процесс отлаживается».Что конкретно означает «приложение» о UnhandledExceptionFilter?

Но эта функция явно предоставляется ОС в файле kernel32.dll в соответствии с этой же страницей.

Почему они назовут это определенной функцией?

ответ

3

Да, очень неудобный язык. Это определение функции . Что вы можете использовать с ключевым словом __except или в качестве аргумента для SetUnhandledExceptionFilter(). Либо сделайте свою «функцию, определяемую приложением».

Если вы не выполняете обработку по умолчанию, отладчик автоматически останавливается при необработанном исключении. Я полагаю, это то, что они имели в виду, «который передает исключения отладчику». Документы SDK для SEH заслуживают оценки со всех сторон.

+0

ОК, как я понимаю, этой статье удается документировать _prototype_ с именем UnhandledExceptionHandler, а также _function_ с именем UnhandledExceptionHandler в одном месте, совершенно не объясняя различия. Спасибо, что прояснили это. –

1

UnhandledExceptionFilter() сам по себе не является собственной функцией, предоставляемой ядром (хотя ядро ​​реализует свою собственную реализацию по умолчанию, которая используется до тех пор, пока вы не переопределите ее самостоятельно). В приведенной ниже документации UnhandledExceptionFilter() описывается прототип функции, за которым следует следовать, если вы решите реализовать свою собственную функцию и передать ее функции SetUnhandledExceptionFilter(), чтобы активировать ее в ядре.

+0

Хм, как вы говорите, это похоже на ввод в заблуждение. Если это не функция сама по себе, почему она появляется в моей стеке WinDbg как «KERNEL32! UnhandledExceptionFilter»? –

+0

(Но это риторический вопрос, действительно: я думаю, что сейчас понимаю). –

Смежные вопросы