2015-01-03 2 views
2

Мы разрабатываем видеоигру, в которой имеет буквально никаких ошибок, когда имеет, как и любое приложение, ошибки, которые могут иногда вызывать серьезные сбои. К сожалению, ряд аварий, которые мы каталогизировали до сих пор, не в наших силах, поскольку они могут решить их или обойти их из-за использования промежуточного ПО с закрытым исходным кодом (Unity 3D).Можно ли написать сторожевой процесс для обнаружения сбоев приложений?

Несмотря на то, что мы можем надеяться и ждать, пока разработчик промежуточного ПО устранит проблему, мы хотели бы увидеть, возможно ли, по крайней мере, сделать сбои более информативными и удобными для пользователя. Например, один из редких сбоев, который могут возникнуть у наших пользователей, заключается в том, что некоторые AV-продукты вызывают какое-то состояние гонки нитей и приводят к взрыву игры. Мы хотели бы иметь возможность обнаруживать подпись сбоев и ошибок и предоставлять пользователю ссылку на нашу вики или форумы о том, как ее разрешить (если возможно).

Возможно ли написать легкий процесс сторожевого таймера или родительский процесс, который может реагировать на события сбоя на платформах Windows?

+0

Несомненно, это то, что WER уже делает. Отчет об ошибках Windows, тот, который показывает пользователю поле «Мы сожалеем». Виды отчетов, которые вы можете получить на панели управления, описаны здесь (http://msdn.microsoft.com/en-us/library/windows/hardware/br230776.aspx). Или вы можете написать свой собственный, функция SetUnhandledExceptionFilter() winapi является основной. –

+0

Я не верю, что могу использовать это из внешнего процесса? –

+2

Нет, SetUnhandledExceptionFilter() должен вызываться процессом, который страдает от сбоев. То, что вы делаете в фильтре, зависит от вас, насколько это возможно, мудро. Написание информации об исключении в ранее созданный файл с отображением памяти и сигнализация процесса watchdog с именованным событием - это шаблонный подход. –

ответ

2

Сбор аварийных свалок за пределами процесса аварийного восстановления. Вы никогда не знаете, влияет ли ваш обработчик обработанных обработчиков, или нет. Но есть и другие варианты:

  • Включить WER LocalDumps и записи сторожа (FileSystemWatcher) для каталога, где отвалы хранятся.
  • Настройте AeDebug и приложите свой собственный отладчик во время сбоя.
Смежные вопросы