Где 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