Необработанное исключение: 0x80000001: не реализовано.(VC ++) - PullRequest
1 голос
/ 19 января 2010

Я использую MS Visual Studio 2005 (C ++) ..

Может кто-нибудь сказать мне, что может вызвать исключение во время выполнения, например, так ..?

Необработанное исключение в 0x07ed0027 (xxx.dll) в yyy.exe: 0x80000001: не реализовано.

xxx.dll - это dll, над которой я работаю, а yyy.exe - исполняемый файл, вызывающий эту dll. Когда необработанныйВо время отладки возникает исключение, оно приводит меня к функции, но я не вижу в ней ничего плохого (она не вызывает исключение при каждом вызове этой функции).Во всяком случае, я проверил все значения в функции, и они кажутся нормальными. Если я нажимаю продолжить, а не разрывать, или нажимаю F5 после перерыва, то происходит, как будто ничего не произошло. Пожалуйста, дайте мне знать, если я не предоставилдостаточно информации ..

Спасибо.

Ответы [ 2 ]

5 голосов
/ 19 января 2010

Как и более привычный 0xC0000005, 0x80000001 - это код исключения, которое вызывается. Вы можете посмотреть их в winnt.h. В этом случае я нашел #define STATUS_GUARD_PAGE_VIOLATION ((DWORD )0x80000001L)

Защитные страницы используются для роста стека. Первая страница после вершины стека помечается как защитная страница. Когда вы пишете об этом - обычно путем добавления большего количества данных в стек - исключение защитной страницы берется. ОС выделяет дополнительную страницу или ОЗУ (или, возможно, 2 - подробности, оставленные ОС) и перемещает защитную страницу вверх.

1 голос
/ 19 января 2010

Я думаю, что фильтры исключений могут помочь вам получить более подробную информацию.

USe SetUnhandledExceptionFilter , чтобы установить фильтр необработанных исключений и проверить, где именно генерируется исключение.

...