Где Android хранит журналы выключения? - PullRequest
8 голосов
/ 20 мая 2011

Я знаю, что журнал загрузки может быть получен путем извлечения содержимого от kmsg или dmesg до ADB.
Но я не знаю, как получить журналы выключения в Android, поскольку в Android нет папки /var (место, где большинство настольных Linux-дистрибутивов обычно хранят свои журналы выключения).

Так как я могу получить журналы выключения в Android?

Ответы [ 4 ]

6 голосов
/ 20 мая 2011

Посмотрите в некоторых местах, таких как эти:

/proc/last_kmsg
/data/tombstones/
/data/dontpanic/
/data/system/dropbox/

(Этот список не является строго журналами ядра, включая журналы инфраструктуры и приложений, которые также иногда представляют интерес)

2 голосов
/ 24 ноября 2014

TL; DR :
Запустить команду через adb, которая копирует logcat и proc / kmsg в файл и поддерживает его работу, даже когда adb отключается с помощью nohup, disown или setsid,Вероятно, требуется busybox, также нужны root и adb root.
setsid cat proc/kmsg > /sdcard/kmsg.txt &
и
logcat -v long -f /sdcard/logcat.txt (как-то работает только без setsid)

Или добавить обычные команды копирования в некоторые скрипт запуска .
/ TL; DR

Вы можете постоянно копировать proc/kmsg и logcat в файл на устройстве Android или на карту microSDчтобы получить логи даже после отключения adb.

Вам нужен root-доступ и adb root-доступ, чтобы это работало.В последнем случае используйте параметр в настройках разработчика, если у вас есть пользовательский диск или небезопасное приложение adbd .

После использования adb shell для получения оболочки Android введите su для получения доступа суперпользователя.

Тогда вам нужно не только поставить амперсанд (&) после команды, но итакже убедитесь, что команда продолжает работать после отключения adb.Это делается с помощью nohup, disown или setsid (см. здесь для использования).
Если это не работает, потому что у вас нет этих команд, вам необходимо установить busybox .
См. Мой вопрос здесь .

См. здесь для получения журналов logcat и ядра и печати их в некоторый файл.или слить это.См. Developer.android.com/tools/help/logcat.html параметры для команды logcat.

В конце вы можете получить команду типа setsid cat proc/kmsg > /sdcard/kmsg.txt & для сообщений ядра.

Для logcat у вас может быть одна из следующих команд: logcat -v long -f /sdcard/logcat.txt или logcat -v long > /sdcard/logcat.txt

Я не знаю почему, но иногда она не работает с setsid и просто не копирует непрерывно, ноостановился вскоре после выполнения команды.В этих ситуациях он также обнаруживался при вводе jobs, чего не было в противном случае.Тогда он просто работал без setsid, он оставался в живых после отключения и повторного подключения.Я думаю, вы должны просто попробовать, когда файл продолжает увеличиваться.Если кто-то выяснил, почему он ведет себя так, как есть ... дайте мне знать, и я отредактирую ответ.

Возможно, добавление команд в сценарий запуска может быть решением и для некоторых..

Надеюсь, это поможет.

fightcookie

2 голосов
/ 04 ноября 2011

Одна из работ, которую я нашел для сбора журналов выключения в Android, - это запустить adb pull /proc/kmsg C:\Logs.txt на главном ПК, а затем выключить устройство.Вы будете получать журналы до тех пор, пока USB-соединение между хостом и устройством не будет отключено!Я знаю, что это только один случай из многочисленных сценариев отключения, но я не нашел удовлетворительных ответов для других случаев!

0 голосов
/ 07 января 2019

Новые телефоны НЕ используют ни одно из этих мест, поэтому, если вы читаете эту статью, то на данный момент

Журналы сбоев ядра теперь находятся в / sys / fs / pstore вместо / proc / last_kmsg

...