У меня есть приложение в активном использовании с редко встречающимся «замораживанием» потока пользовательского интерфейса. Это, конечно, приводит к тому, что приложение становится невосприимчивым и требует от пользователя его вручную завершить.Обнаружение заторможенного потока пользовательского интерфейса
Из-за того, насколько сложно решить эту проблему, я хотел бы разработать некоторые инструменты, которые помогут собрать данные о том, когда это происходит в поле и что происходит в то время. То, о чем я думаю, это какая-то фоновая задача сторожевого таймера, которая будет отслеживать «сердцебиение» из периодически запланированной задачи потока пользовательского интерфейса. Если он слишком длительный, я могу сказать, что пользовательский интерфейс фактически заблокирован (или, по крайней мере, застопорился дольше, чем я когда-либо хотел) и, следовательно, собирал данные.
Таким образом, в подготовке к этому, несколько вопросов:
уже существует что-то вроде этого? Это кажется довольно распространенной проблемой, поэтому, если существуют существующие инструменты для диагностики этого, возможно, стоит использовать их, а не сворачивать собственное решение.
Я все еще обсуждаю, какую информацию я должен попытаться собрать, когда обнаружено зависание. Есть ли способ для меня легко захватить трассировку стека потока пользовательского интерфейса, чтобы он мог быть зарегистрирован? Возможно захватить трассировки стека из всех активных потоков? Есть ли способ захватить полный отладочный дамп?
Спасибо, это выглядит как интересный инструмент. Могут возникнуть некоторые логистические/политические проблемы с поиском клиентов, желающих запустить сторонние средства диагностики отладки для сбора информации. Я думаю, что интегрированное ведение журнала и добровольная отправка файлов журнала чаще всего принимаются. –
Скорее наоборот, по крайней мере, с хорошо освещенным и документированным инструментом они будут знать, что он делает и что может быть выставлено. Единственное преимущество добавления его в том, что они не знают, поэтому не думают блокировать его, что не является отличным способом внушить уверенность, что вы серьезно относитесь к их опасениям. Но это зависит от вас. –