Визуальная студия показывает неправильное местоположение для SEH Exception

У меня есть простой код:

#include "stdafx.h"#include <iostream>

void foo()
{
int* p = 0;
*p = 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
std::cout << "123";
foo();
std::cout << "456";
return 0;
}

Отладка по умолчанию Настройки Visual Studio. Отладка -> Исключения -> Сбросить все.

Результат после запуска этого кода в конфигурации отладки — я получил исключение Необработанное исключение в 0x77d315de (ntdll.dll) в exc.exe: 0xC0000005: Место записи нарушения прав доступа 0x00000000.
VS открыть файл ostream, указатель остаться здесь:

_Ostr.setstate(_State);
return (_Ostr);
} <--

Трассировки стека:

    ntdll.dll!_ZwRaiseException@12()  + 0x12 bytes
ntdll.dll!_ZwRaiseException@12()  + 0x12 bytes
exc.exe!std::operator<<<std::char_traits<char> >(std::basic_ostream<char,std::char_traits<char> > & _Ostr={...}, const char * _Val=0x00000000)  Line 808 + 0xf bytes    C++
>   exc.exe!wmain(int argc=0x00000001, wchar_t * * argv=0x00164810)  Line 14    C++
exc.exe!__tmainCRTStartup()  Line 552 + 0x19 bytes  C
exc.exe!wmainCRTStartup()  Line 371 C
kernel32.dll!@BaseThreadInitThunk@12()  + 0x12 bytes
ntdll.dll!___RtlUserThreadStart@8()  + 0x27 bytes
ntdll.dll!__RtlUserThreadStart@8()  + 0x1b bytes

Если я установил флажок «Брошенный» в Debug -> Win32 Exceptions -> C0000005 Visual Studio останавливается в нужном месте.

У моего коллеги такая же Visual Studio, Windows 7 x64 и такое же оборудование. Но его VS останавливается в нужном месте без изменения настроек исключения.

Что не так с настройками моей Visual Studio?

Самая большая проблема — поведение с исключениями .net тоже не типично. На данный момент в режиме отладки VS просто игнорирует практически все исключения. Похоже, у меня есть глобальный фильтр исключений, и все исключения были обработаны. Программа может запускаться и показывать диалоговое окно в режиме релиза Catel mvvm toolkit рассылает спам с исключениями о незарегистрированных исключениях модели и файловой системы.

Любые идеи, как я могу это исправить, не устанавливая флажок «Брошенный».

[РЕДАКТИРОВАТЬ]

Хорошо, я нашел что-то странное. После изменения Debug -> Exceptions я остановился на строке с исключением. Но если я нажму «Продолжить», я уйду в файл ostream. Похоже, отладчик VS нажмите «Продолжить» по умолчанию.

[РЕДАКТИРОВАТЬ]

First-chance exception at 0x012514cf in exc.exe: 0xC0000005: Access violation writing location 0x00000000.
Unhandled exception at 0x773515de (ntdll.dll) in exc.exe: 0xC0000005: Access violation writing location 0x00000000.

Вот что я вижу в выводе. Есть только одно исключение. Похоже, что исключение было обработано как-то, а затем было брошено позже в другом месте.

2

Решение

Обычный подозреваемый: .ncb файл или .pdb или что-то еще испорчено. Попробуйте стереть все локальные файлы (solutionname.suo, solutionname.ncb, projectname.anything.user и все в промежуточных и выходных каталогах) и проверьте, помогает ли это что-нибудь.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]