Pregunta

Estoy usando una ROM personalizada de Android en mi dispositivo, también con un boot.img personalizado (kernel personalizado + cmdline + ramdisk).Ahora quiero poder ver los registros del kernel inmediatamente después de un pánico en el kernel, pero desafortunadamente no puedo usar una consola serial.

Las buenas noticias:Parece que hay algunas fuentes/módulos en el kernel de Linux de Android que están escritos exactamente para este propósito.Por ejemplo, las siguientes líneas están activadas en mi archivo .config para el kernel:

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

Mi problema es:Después de forzar el pánico del kernel para probar esto, es decir.cargando un módulo de kernel de pánico simple con insmod panic.ko, parece que no se escribió ningún registro en el MTD llamado oem_log (que existe en mi dispositivo).En segundo lugar, la RAM tampoco contiene registros después del reinicio porque parece estar borrada, o los registros tampoco se escriben.

Entonces, ¿cómo puedo obtener los registros del kernel después de un pánico?También sería útil si hubiera alguna manera de probar APANIC en el sistema en ejecución.¿Quizás usando el sistema de depuración del kernel?A partir de ahora soy bastante nuevo en esto.

¡Gracias de antemano por cualquier ayuda!

¿Fue útil?

Solución

como para mi,

cat /proc/last_kmsg 

Después del reinicio (causado por el pánico del kernel durante el insmod), enumera los mensajes relevantes para la caída, como

[  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

para que al menos puedas intentarlo.Estoy trabajando con Linux 3.0.31-G4F6D371 en Galaxy Nexus.

Otros consejos

Parece en Android-7.0 o superior, el registro de la última_kmesg se mueve a: / SYS / FS / Pstore / Console-Ramoops, así que intente:

cat /sys/fs/pstore/console-ramoops

Funciona bien para mí en Nexus-5x

Qué tal si /data/dontpanic ¿carpeta?Después de que ocurra el pánico del kernel, puede conectar el cable USB con su dispositivo Android y verificar los archivos en esa carpeta a través de ADB.

Encontré que esta carpeta contiene algunos apanic archivos después de que ocurre un pánico en el kernel.Por ejemplo, si acaba de ocurrir un pánico en el kernel y revisa la carpeta, puede encontrar estos dos archivos:

apanic_console

apanic_threads

Puedes averiguarlo en apanic_threads qué hilo/proceso se está ejecutando cuando ocurre el pánico del kernel.En apanic_console puede encontrar más información, como el seguimiento de la pila y los valores de algunos registros críticos: PC, LR, etc.
Le ayudarán a comenzar la depuración.

Android crea una consola de RAM e intenta guardar el último búfer de mensajes del kernel para usted en RAM (asumiendo que la alimentación no salga).Puede acceder a este archivo a través de la interfaz proc y en mi sistema es lector mundial:

cat /proc/last_kmsg

Para obtener más información, consulte el código del kernel @ controladores / puesta en escena / android / ram_console.c

Me enfrenté a un número de de coleccionar registros de apagado en Android.Había publicado esta pregunta de vuelta y tiene 2 enfoques.Yo uso el segundo, ya que el 1er no funciona para mí.Aquí está la pregunta

¿Dónde hace los registros de apagado de la tienda de Android?

Espero que esto ayude.

Se puede acceder al registro del kernel de Linux con el comando dmesg.Puede leer sobre el sistema de registro de Android aquí .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top