Android: Как получить журналы ядра после паники ядра?

Я использую пользовательский ПЗУ Android на моем устройстве, а также пользовательский boot.img (пользовательское ядро ​​+ cmdline + ramdisk). Теперь я хочу иметь возможность просматривать журналы ядра сразу после паники ядра, но, к сожалению, я не могу использовать последовательную консоль.

Хорошие новости: Кажется, что есть некоторые источники / модули в ядре Linux Android, которые написаны именно для этой цели. Например, следующие строки активируются в моем файле .config для ядра:

CONFIG_ANDROID_RAM_CONSOLE=y CONFIG_ANDROID_RAM_CONSOLE_ENABLE_VERBOSE=y CONFIG_APANIC=y CONFIG_APANIC_PLABEL="oem_log" 

Моя проблема: после того, как я заставил панику ядра проверить это, то есть, загрузив простой модуль панического ядра с помощью insmod panic.ko , кажется, что в MTD не было записано ни одного журнала oem_log (который существует на моем устройстве). Во-вторых, ОЗУ также не содержит журналов после перезагрузки, потому что кажется, что они очищены – или журналы также не записаны.

Итак, как я могу получить журналы ядра после паники? Также было бы полезно, если бы я мог протестировать APANIC на работающей системе. Может быть, используя систему отладки ядра? На данный момент я довольно новичок в этом.

Заранее благодарю за любую помощь!

Solutions Collecting From Web of "Android: Как получить журналы ядра после паники ядра?"

Как по мне,

 cat /proc/last_kmsg 

После перезагрузки (вызванного паникой ядра во время insmod) перечисляет сообщения, относящиеся к сбою, например

 [ 424.909515] Kernel panic - not syncing: Fatal exception [ 424.909606] Backtrace: [ 424.909790] [<c005a5ec>] (dump_backtrace+0x0/0x10c) from [<c05f38dc>] (dump_stack+0x18/0x1c) [ 424.909973] r6:c5cccf00 r5:00000000 r4:c08505a0 r3:00000000 

Поэтому вы можете хотя бы попробовать. Я работаю с Linux 3.0.31-g4f6d371 на Galaxy Nexus.

Как о папке /data/dontpanic ? После паники ядра вы можете подключить USB-кабель к вашему устройству Android и проверить файлы в этой папке через ADB .

Я обнаружил, что эта папка содержит некоторые apanic файлы после паники ядра. Например, если произошла паника ядра, и вы пойдете проверить папку, вы можете найти эти два файла:

apanic_console

apanic_threads

Вы можете узнать в apanic_threads какой поток / процесс запущен, когда происходит паника ядра. В apanic_console вы можете найти дополнительную информацию, такую ​​как трассировка стека и значения некоторых критических регистров: PC , LR и т. Д.
Они помогут вам начать отладку.

Я столкнулся с аналогичной проблемой сбора журналов shutdown в Android. Я давно опубликовал этот вопрос, и у него есть 2 подхода. Я использую второй, так как первый не работает для меня. Вот вопрос

Где хранятся журналы закрытия Android-магазина?

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

Android создает консоль RAM и пытается сохранить последний буфер сообщений ядра в RAM (при условии, что питание не погаснет). Вы можете получить доступ к этому файлу через интерфейс proc, а в моей системе он доступен для чтения в мире:

 cat /proc/last_kmsg 

Для получения дополнительной информации см. Код ядра @ drivers / staging / android / ram_console.c

Доступ к журналу ядра Linux можно получить с помощью команды dmesg . Здесь вы можете прочитать о Системе регистрации Android.