Можно ли получить logcat до сбоя системы после восстановления телефона? Т.е. мой телефон работает нормально, потом зависает и перезагружается, и я хочу просмотреть логи, когда он восстановится, чтобы попытаться определить, что вызвало крах. Я не могу найти никакого способа просмотреть logcat ни в чем, кроме реального времени, кроме как запустить и выполнить эмулятор терминала logcat -f logcat.txt V
, а затем просто оставить его работающим навсегда. Это может создать массивный файл, который займет все мое хранилище.
Я не могу поверить, что нет возможности просмотреть отчет о сбое, я просто не могу понять, как это сделать.
К сожалению, logcat не выдерживает жесткой перезагрузки, потому что журналы хранятся в циклических буферах в памяти и никогда не записываются в хранилище. Ваше решение оставить сеанс терминала работающим может сработать, но, как вы сказали, файл может неконтролируемо увеличиваться, а во время перезагрузки может быть поврежден выходной файл. Я бы предложил добавить переключатели -r
и -n
, чтобы записывались только самые последние записи:
logcat -r 1024 -n 10 -f /sdcard/logcat.txt &
Это ограничивает журналы до 10 файлов с именами «logcat.txt», «logcat.txt.2» и т. д., каждый размером 1 МБ. Когда этот предел будет достигнут, он перезапишет первый файл и так далее.
Вы также можете заглянуть в /proc/last_kmsg
файл, в котором хранятся журналы ядра непосредственно перед последней перезагрузкой. Используйте cat /proc/last_kmsg > /sdcard/last_kmsg.txt
команду, чтобы записать ее содержимое в файл в вашем хранилище.
эвоки
logcat.txt
, а более старые журналы будут увеличивать свой суффикс, или самый новый журнал просто перезапишет самый старый и сохранит то же имя?Чак
эвоки
эвоки
Чак
top
команде adb shell вы получите все запущенные в данный момент процессы. Попробуйте убить процесс с именем «logcat» с владельцем «shell». Синтаксис такойadb shell kill NNNN
, где «NNNN» — это идентификатор процесса (1-й столбец вtop
.). Кроме того, перезагрузка устройства обязательно его остановит :)