Как включить диалоговое окно Window Error Reporting (WER). Общий вопрос новичка
После первоначальной настройки WinQual и WER я намеренно вставил сбой в сборку релиза, ожидая \ надеясь получить диалог WER, но вместо этого по-прежнему получая диалог, содержащий "ошибка времени выполнения! Приложение запросило завершение времени выполнения в необычной форме. путь...".
Кажется, что все работает правильно в отношении установки WinQual (вместе со всеми поддерживающими сервером символов, исходным сервером, учетной записью WinQual, отправленными файлами сопоставления и проверкой их наличия моей учетной записи WinQual). Теперь я хочу убедиться, что файлы дампа созданы, отправлены в WinQual и я могу получить их для отладки.
Я проверил, что отчеты об ошибках моего компьютера (XP Pro SP3) включены (системные свойства - отчеты об ошибках). Я подумал, что самая сложная часть - это настроить все выше, не заставляя программу фактически показывать диалог WER. Есть ли какая-то модификация для exe или ПК?
3 ответа
Если вы используете приложение WinForms, в его цикле событий есть обработчик перехвата, который открывает диалоговое окно и предотвращает включение Windows Error Reporting (WER).
Этот вызов предотвращает это. (Http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/176b7f8c-3efb-4e6f-8deb-c685c62629db/)
Волшебная линия, чтобы исправить:
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);
Приятно знать, что я не могу быть (полностью) сумасшедшим. Вы правы, что внешние проблемы вызывали проблемы для диалога WER.
Я изменил сбой на приведенный выше код, на случай, если моя версия была слишком жестокой, и запустил приложение на трех машинах, и оказалось, что наличие отладки Visual Studio и / или своевременной отладки на XP и Win7 было влияет на диалог WER. Для тех, кто заинтересован, это то, что я видел:
- XP с Visual Studio. Попросили выбрать отладчик, и если я выбрал Нет, программа вышла без диалога WER.
- XP без Visual Studio. Отображается диалог WER и отправляется отчет об ошибке (да).
- Win7 с Visual Studio. Не врезался вообще.
- Win7 без Visual Studio. Я еще не проверял, но подозреваю, что он будет вести себя правильно.
Как вы и предполагали, комбинация кода сбоя и непредставительной среды тестирования мешали моему тесту.
Спасибо!
В приложении не должно быть ничего, что нужно сделать, чтобы оно заработало. Я подозреваю, что вам каким-то образом удалось потерпеть крах каким-то странным образом, который не очень хорошо работает с WER. Попробуйте добавить сбой после инициализации приложения, а не во время запуска приложения (если это то, что вы делаете). Я обычно делаю что-то вроде этого:
int* p=0;
*p=1;
Другая возможность состоит в том, что ваш компьютер не даст вам таких же результатов, как конечный пользователь, из-за отладчика Just In Time в Visual Studio, поэтому попробуйте его на типичном компьютере конечного пользователя. Еще одна возможность состоит в том, что ваша машина поддерживает XP, а поддержка WER была на ранней стадии в XP и лучше в Vista и Win7, поэтому попробуйте аварийно завершить работу приложения на более новой машине.