WPF - какая информация запечатлеть при обращении с нечестными исключениями?
Вопрос
Я разрабатываю приложение в WPF / .NET 3.5, которое будет доступно для загрузки в Интернете. Я - в меру своих способностей - написание бесплатного кода и использую исключения, только где это необходимо. Однако мой опыт разработки программного обеспечения показал, что пользователям всегда удается сделать что -то странное, что вызывает исключение, которое вы никогда не могли себе представить. Я хотел бы собрать дополнительную информацию, когда мне придется поймать нездоровое исключение. Пока что я захватываю следующее:
- Стандартные поля исключений (сообщение, тип, Stacktrace и т. Д.)
- ОС версия
- .NET версия
- Версии приложений DLL, загруженные в приложение
- Информация о лицензии приложения
- Инструментация последних нескольких команд, выполненных пользователем.
Я очень сознательно, что не хочу получать какую -либо «личную» информацию об пользователе, поскольку я просто не верю в такие вещи. Следовательно, не беспокоит имени пользователя/домен/IP -адрес (Хотя информация о исключении доставляется в веб -сервис, я по своей природе получу информацию о IP, но это может быть прокси -машина).
Мой вопрос
Любой, кто выпустил заявку в общественном достоянии (т. Е. на компьютеры, не в контролируемой корпоративной среде) - можете ли вы предложить что -нибудь еще, что было бы полезно для отслеживания причин ошибок?
В частности, я не хочу собирать информацию, которой я не могу управлять/код, - т.е. объем памяти, доступной на ПК, или тип прикрепленных принтеров - эти вещи обрабатываются .NET Framework, и я не должен действительно на самом деле (Читайте: не хочу) Придется изменить мой код, чтобы справиться с вариациями!
Спасибо!
Решение
Я думаю, что этого должно быть достаточно. У вас есть информация об окружающей среде, то, что пользователь пытался сделать, и один из самых важных инструментов отладки: The Stack Trace.
Если вы не говорите о приложении по управлению принтерами или о чем -то в этом роде, тогда информация о принтере не стоит того.
Всегда существует такая удаленная вероятность, что вы столкнетесь с ошибкой, которая возникает в результате странной комбинации аппаратного обеспечения, запуска служб, установленных приложений и фазы луны. Я не думаю, что стоит безумно собрать информацию о пользовательской среде, чтобы справиться с этими редкими ошибками.
Просто не забывайте иметь способ, с которым можно связаться для отчетов об ошибках, если пользователь действительно нуждается в решении своей конкретной проблемы, чтобы он мог предоставить больше информации об этом и помочь вам воспроизвести ее. В зависимости от вашей целевой аудитории вы должны выбрать между чем-то вроде трекера ошибок или простого адреса электронной почты.