¿Cómo sincronizar el tiempo de Kernel y el tiempo de logcat?

Estoy trabajando en un teléfono Android basado en el kernel de Linux. Estoy usando kmsg para los registros de kernel y adb logcat -v time para registros de plataforma. El problema es que los registros de Kernel muestran el tiempo desde 0.000000 y logcat se muestra desde el inicio de la hora del sistema (por ejemplo, si el tiempo en el teléfono es 10.43.00, se mostrará el primer registro de este tiempo)

Ahora no puedo comparar los eventos de estos 2 logs como la base de tiempo (referencia) es diferente. ¿Puede alguien amablemente señalar cómo sincronizar estos 2 veces?

Pavana,

Tal vez con usted puede etiquetar su logcat imprime con el tiempo desde el último arranque? Esto debería estar más cerca del tiempo mostrado en kmsg.

El tiempo elapsedRealtime() desde el último arranque se puede recuperar con elapsedRealtime() .

Puede crear un solo archivo que contenga los registros del kernel y de la plataforma de la siguiente manera:

 $adb shell $logcat -v time -f /dev/kmsg | cat /proc/kmsg > /data/klog_plog_log.txt 

Puede diferenciar ambos registros mediante sellos de tiempo en los registros de la plataforma. A continuación, extraiga el archivo a su unidad local utilizando

 adb pull /data/klog_plog_log.txt > sample.txt 

Consulte http://jai-tech.blogspot.com/2012/01/taking-kernel-and-platform-logs-of.html . Espero que esto ayude.

Recuerdos, JP

Otra solución sería similar a la respuesta de jpg, pero en la otra dirección, redirigir los mensajes del kernel en logcat. Esto es mejor, porque demasiados mensajes de logcat podrían sobrecargar la consola serie (si la tiene activa).

Puede ejecutar esto en un shell de Android:

 cat /proc/kmsg | while read LINE; do echo '\06kernel\0'$LINE'\0' > /dev/log/main; done 

O esto en un shell host:

 adb shell '(cat /proc/kmsg | while read LINE; do echo \\06kernel\\0$LINE\\0 > /dev/log/main; done)' 

La primera vez que inicie el comando, verá todos los mensajes dmesg actuales en un lugar, pero cualquier otro mensaje será intercalado, cuando aparezca.

Y luego examinar logcat en un shell diferente. Si examina logcat con -v tiempo, los mensajes del núcleo contendrán las marcas de tiempo logcat y kernel. Por supuesto, puede haber retrasos entre los dos.

Otra manera, incluso más simple de ver los mensajes entrelazados sería:

 adb shell '(logcat & cat /proc/kmsg) > /path/to/log/file' 

Pero en este caso es un poco más difícil identificar los mensajes que vienen del kernel, y no se puede saber cómo se relacionan las marcas de tiempo del kernel con las marcas de tiempo logcat.

El método de archivo único descrito anteriormente es bueno, pero no siempre puede ser útil, ya que la entrada de logcat y kmsg puede ser retrasada debido a la memoria intermedia. Por lo que es muy probable que vea un bloque de entradas kmsg y luego un bloque de entradas logcat que todavía puede ser entrelazado en tiempo real.

Dicho esto, es posible que puedas sincronizar el tiempo kmsg y el tiempo logcat buscando mensajes de suspensión del dispositivo en kmsg (grep UTC):

<6> [249485.550811] suspensión: exit suspend, ret = 0 (2012-12-27 16: 16: 46.300872527 UTC)

Como se puede ver las entradas en kmsg informe el tiempo actual del reloj del sistema que luego se puede sincronizar con el valor de tiempo kmsg. Tenga en cuenta, sin embargo, que el valor de tiempo kmsg no aumenta cuando el dispositivo está dormido, mientras que el tiempo del reloj de pared, obviamente, lo hace. Para ello tendrá que volver a sincronizar en el tiempo de reloj de pared en cada entrada y salida de suspensión a fin de obtener el tiempo correcto wallclock.

Creo que se puede utilizar de esta manera:

 adb shell logcat -v time -f /dev/kmsg | adb shell cat /proc/kmsg >sample.txt 
  • Cómo escribir una aplicación de Android para hacer sysfs leer / escribir.
  • Error al volver a embalar boot.img (Android)
  • OProfile en android
  • Soporte de protocolo SCTP en android
  • Módulo de construcción del núcleo para Android
  • ¿Dónde está el reporte git de la fuente del kernel de Android?
  • Cómo compilar un archivo "tun.ko" para OpenVPN?
  • Despierta teléfono android en una interrupción, en un GPIO
  • Encontrar código fuente para Nexus S Camera HAL?
  • ¿Cómo puedo crear un nuevo dispositivo de ratón virtual en mi dispositivo Android?
  • Tiempo de actividad de Android (Linux) con CLOCK_MONOTONIC
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.