Пожалуйста, помогите! Я действительно в своем уме.
Моя программа - небольшой менеджер личных заметок (Google для "cintanotes").
На некоторых компьютерах (и, конечно, у меня нет ни одного из них) происходит сбой с необработанным исключением сразу после запуска.
Ничего особенного в этих компьютерах сказать нельзя, за исключением того, что они, как правило, имеют процессоры AMD.
Среда: Windows XP, Visual C ++ 2005/2008, необработанный WinApi.
Вот что является определенным в этом «Гейзенбаге»:
1) Сбой происходит только в версии Release.
2) Сбой исчезает, как только я удаляю все, что связано с GDI.
3) BoundChecker не имеет жалоб.
4) Запись журнала показывает, что сбой происходит при объявлении локальной переменной int! Как это может быть? Повреждение памяти?
Любые идеи будут с благодарностью!
ОБНОВЛЕНИЕ: мне удалось отладить приложение на "неисправном" ПК. Результаты:
"Необработанное исключение в 0x0044a26a в CintaNotes.exe: 0xC000001D: недопустимая инструкция."
и разрывы кода на
0044A26A cvtsi2sd xmm1, dword ptr [esp + 14h]
Так что, похоже, проблема была в параметре компилятора «Генерация кода / Включить расширенный набор инструкций». Он был установлен на «/ arch: SSE2» и падал на компьютерах, которые не поддерживают SSE2. Я установил эту опцию на «Не установлено», и ошибка исчезла. Уф!
Большое спасибо всем за помощь !!