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