У меня странный прерывистый сбой, который происходит только при некоторых обстоятельствах , что мне не удается решить, и я ищу совет SO, как его решить.
Ошибка
В явно случайных точках Windows показывает диалоговое окно «[Приложение] перестало работать». Это APPCRASH в ntdll.dll, код исключения 4000001f, смещение исключения 000a2562. Вот где это становится сложным: это происходит только при запуске приложения под отладчиком. Однако отладчик не перехватывает это исключение, и в тот момент, когда Windows отображает это диалоговое окно, среда IDE не отвечает. Эта ошибка не возникает при нормальной работе, т.е. не в отладчике IDE.
Я не могу воспроизвести его вне отладчика, поэтому я не могу запустить программу и подключиться, когда она уже потерпела крах. Я не могу приостановить выполнение, когда Windows показывает это диалоговое окно, так как среда не отвечает. Я могу вручную проследить через строки кода, чтобы увидеть, где это происходит. Их несколько, и где это происходит, по-видимому, случайно. Некоторое время это происходило при отображении окна (или новой формы), некоторое время при создании потока.
Редактировать: Я отследил его до IDE: если я сделаю паузу на точке останова и перейду на вкладку Статус потока, программа сразу же вылетит с помощью приведенного выше диалога, даже если теоретически оно приостановлено. В этой ситуации IDE остается отзывчивым. Это действительно странно.
Дополнительная информация
Я только что переместил свою среду разработки на VMWare Fusion . Ошибка также возникает при сборке со старого компьютера (Windows) на моем новом компьютере; это не произошло с тем же файлом EXE на этом старом компьютере. Это заставляет меня задуматься, связано ли это с Fusion или чем-то в моей новой установке.
Я бегу:
- Windows 7 Pro x64 на WMWare Fusion 3.1.3 на OSX Lion 10.7.1, все полностью обновлено. Fusion работает в режиме «Полный экран» на одном из моих экранов.
- Коллега, работающий под управлением Windows 7 (не на виртуальной машине), не сталкивается с этой проблемой. Я также не на моем старом компьютере Vista.
- Embarcadero RAD Studio 2010, полностью обновленный (я надеюсь, что существует около пяти обновлений, и привести их в порядок сложно). У меня установлен DDevExtensions 2.4.1, а также последняя версия IDE Fix Pack: удаление обоих эффект.
- Приложение написано в основном на C ++, с фрагментами Delphi. Это 32-битный.
- Мы используем EurekaLog , но исключение также не перехватывается. (Обычно исключение отлавливается сначала отладчиком, а затем EurekaLog.)
- Запуск отладочной сборки (без EurekaLog, дополнительной отладочной информации и т. Д., Для отладочных DCU, имеющих значение true) также воспроизводит его. Однако опция «Отладка DCU» на странице «Связывание Delphi» в диалоговом окне настроек проекта C ++ Builder, похоже, не дает никакого эффекта - я не могу войти в код VCL и найти строку, которая фактически вызывает ошибку.
- Codeguard (который обнаруживает ошибки доступа к памяти, двойное освобождение, доступ к освобожденной памяти, переполнение буфера и т. Д.) Ничего не сообщает.