Это безумие. Это начало происходить в моем основном проекте, поэтому я создал крошечный образец совершенно нового проекта, чтобы воспроизвести его и достаточно точно. Этого не произошло в созданном мною примере проекта, который является только консольным приложением Win32.
Я запускаю это на Win7x64, если это имеет значение. VS2008 SP1.
Здесь идет. Я создаю небольшое диалоговое приложение с кнопкой. Поместите точку останова в функцию обработчика для этой кнопки. Функция обработчика кнопок выглядит следующим образом:
void CTestProjectDlg::OnBnClickedButton1()
{
int i;
i = 2; // < breakpoint here
i = 3;
}
Нажмите кнопку, нажмите точку останова. От F10 к шагу и буму: «Исключение первого шанса в 0x0398f77b в TestProject.exe: 0xC0000005: нарушение доступа».
Это дает мне возможность разорвать или продолжить. Если я продолжу, он просто попадет снова, только не «Первый шанс». Да, я проверил это исключение в dlg Debug-> Exceptions.
Если я сломаюсь, стек вызовов просто покажет мне строку, где находится точка останова. Если я снова наберу F10 .. Я получу исключение снова, только теперь стек вызовов показывает меня в функции _AfxDispatchCmdMsg (), а мой оригинальный OnBnClickedButton1 () больше не находится в стеке вызовов.
Неважно, где я ставлю точку останова.
Если вместо F10 я просто продолжу с F5, он будет работать нормально.
Теперь .. если я создаю версию Release и запускаю в режиме отладки: я достигаю точки останова, и все указатели, значения переменных выглядят нормально. F10, и они превращаются в мусор. Указатель this теперь равен нулю. M_csHello теперь
Однако в режиме Release исключение не перехватывается, и все работает нормально. Строка «Привет, мир» отображается в диалоговом окне, как и должно быть.
Я отправил запрос, чтобы узнать, был ли установлен какой-либо патч на моем боксе ИТ-отделом в последние день или два. Это не происходило 2 дня назад.
Что ты думаешь? VS2008 поврежден?
Спасибо.
Редактировать: Дополнительная информация. Этого не происходит, если я собираю / отлаживаю платформу x64. Только для Win32.
Я также посмотрел на все исправления / обновления безопасности для VS2008 на коробке. Они
Наконец, я поместил проект на другую машину, которая не обновлялась последние 2-3 недели. Он работает там, и там установлены те же самые обновления VS.
Я также изменил код, который переступает для целей этого поста. .. Это простое целочисленное присваивание, без MFC.
В данный момент я нахожусь в процессе переустановки VS2008.