Я работаю с несколько ненадежным приложением (Qt/windows), частично написанным для нас третьей стороной (просто пытаюсь переложить на него вину). Их последняя версия более стабильна. Вроде. Мы получаем меньше сообщений о сбоях, но мы получаем много сообщений о том, что они просто висят и никогда не возвращаются. Условия меняются, и с небольшой информацией, которую мы можем собрать, мы не смогли воспроизвести проблемы.Отчет о сбоях в сбое, когда мое приложение закрывается на машине клиента
В идеале я хотел бы создать своего рода сторожевой таймер, который замечает, что приложение заблокировано, и предлагает отправить отчет о сбоях обратно к нам. Хорошая идея, но есть проблемы:
Как сторож знает, что процесс повесил трубку? Предположительно, мы прикладываем приложение к тому, чтобы периодически говорить «все в порядке» с сторожевым псом, но где мы помещаем его так, чтобы его было достаточно часто, но вряд ли оно будет на пути к коду, на которое приложение заканчивается, когда оно заперта.
Какая информация должна указывать сторожевой таймер, когда происходит авария? У Windows есть достойная debug api, поэтому я уверен, что все интересные данные доступны, но я не уверен, что было бы полезно для отслеживания проблем.
Вам не нужно разбивать приложение, чтобы создать мини-карты. Вы можете вызвать MiniDumpWriteDump() в любое время. –