Где Android store журналы выключения?

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

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

3 ответов


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

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

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


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


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

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

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

для этого вам нужен root access и ADB root access. Для последнего используйте параметр в параметрах разработчика, если у вас есть пользовательский ПЗУ или 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