Как определить, что вызывает зависание Nexus 4?

У меня новый Nexus 4 с установленной прошивкой Cataclysm (с рутом, 4.3).

Устройство недавно начало зависать - не реагировало на нажатия кнопок, но с пульсирующим белым светодиодом. Я должен долго нажимать кнопку питания, а затем снова нажимать ее, чтобы перезапустить.

Раньше он замерзал время от времени, скажем, раз в неделю, но в последние неделю-две стал замерзать каждый день или, по крайней мере, через день.

Я не могу вспомнить недавно установленное приложение или изменение настроек, которые могли вызвать это.

Мне интересно, есть ли способ определить, «когда» устройство зависает и «что» вызывает его зависание, в идеале, чтобы я мог определить, виновато ли это ПЗУ или устройство. Есть ли приложение, которое может регистрировать поведение устройства и быть прочитанным полутехническим пользователем, таким как я?

Возможно, вы захотите изучить использование adb logcat. У Google есть страница документации для этого здесь . На нашем сайте также есть вопрос Как я могу просмотреть и изучить журнал Android? что вы можете проверить.
Вероятно, лучший способ определить, виноват ли ПЗУ, — это вернуться к стандартному ПЗУ и запустить его на некоторое время, если вы все еще испытываете проблемы, то это почти наверняка аппаратная проблема. Logcat является хорошим решением после того, как вы определили, что это не проблема с оборудованием, поэтому вы можете отправить информацию разработчику (разработчикам) ПЗУ, и она может быть правильно отлажена.
Я мог бы быть убит за это, но CyangoenMod был довольно глючным и медленным для меня на моем HTC One, Nexus 4, HTC Desire, Galaxy S4 в разной степени. Я перешел с него на комбинацию ASOP / Wanam Xposed, поэтому у меня есть стабильная ОС со всеми настройками, которые я хочу. Я не ругаю CyanogenMod, они отличная группа, но я бы определенно попробовал сначала другой ROM, как предложили другие.

Ответы (1)

Есть несколько способов определить вашу проблему. Самый простой способ — прочитать last_kmsg, который обычно хранится в /proc/last_kmsg . Ядро записывает туда все, и это можно прочитать до следующей перезагрузки.

Таким образом, чтение last_kmsg всегда показывает, что произошло до последней перезагрузки устройства.

Другой способ - использовать «adb logcat» или, что более удобно, приложение Catlog , которое может записывать ваш logcat в файл .txt на SD-карту. Имейте в виду, что logcat — это не то же самое, что сообщение ядра, но оно также включает в себя сообщения из приложений пользовательского пространства и материалов пользовательского интерфейса.

Если бы мне было позволено сделать дикое предположение, я бы сказал, что это ошибка ПЗУ (например, пониженное напряжение или что-то еще).

С наилучшими пожеланиями!

Я надеюсь, что это ПЗУ, а не телефон. Я попробую методы, которые вы упомянули, в следующий раз, когда телефон зависнет.
Только что попробовал прочитать last_kmsg, но он не открывается в текстовом редакторе. Пробовал отправлять в Dropbox, не получается. Он даже не будет копироваться в другое место на устройстве.
Похоже, вы не имеете права это читать. Вы пытаетесь прочитать его как root? Какие свойства файла? Должно быть -r--r----- .