6
votes

Comment synchroniser le temps de noyau et le temps de LogCat?

Je travaille sur un téléphone Android basé sur le noyau Linux. J'utilise kmsg pour les journaux de noyau et adb logcat -v heure pour les journaux de plate-forme. Le problème est que les journaux du noyau affichent l'heure de 0.000000 et logcat se présente à partir du début de l'heure du système (par exemple, si l'heure du téléphone est de 10,43,00, il montrera le premier journal de cette heure )

Maintenant, je ne suis pas en mesure de comparer les événements à partir de ces 2 journaux car la base de temps (référence) est différente. Quelqu'un peut-il gentiment signaler comment synchroniser ces 2 fois?


0 commentaires

5 Réponses :


2
votes

PAVAN,

Peut-être que vous pouvez étiqueter vos impressions de logcat avec l'heure depuis la dernière botte? Cela devrait être plus proche de l'heure indiquée à KMSG.

temps depuis que le dernier démarrage peut être récupéré avec elapsédrealtime () .


2 commentaires

@WILLYTLE: Merci beaucoup! Ça marche bien :) Mais le problème est que j'ai besoin d'ajouter elapsédrealtime () dans chaque journal! J'ai donc vérifié dans le code LOGCAT. Le formatage de l'heure est effectué dans android_log_formatlogline () dans logPrint.cpp . Mais elapsédrealtime () est en Java et je ne sais pas comment y accéder à partir d'un fichier CPP. Je ne suis pas capable de trouver un équivalent que je puisse utiliser à partir de ce fichier cpp


L'Android NDK fournit une API d'exploitation forestière pour C / C ++: MANSKI.NET / 2012/05 / Logging-de-C-On-Android



5
votes

Vous pouvez créer un fichier unique contenant des journaux de noyau et de plates-formes comme suit: xxx

Vous pouvez différencier les journaux à l'aide de timbres horaires dans les journaux de la plate-forme. Puis retirez le fichier sur votre lecteur local à l'aide de xxx

référez http://jai-tech.blogspot.com/2012/01/taking-kernel-and-platform-logs-of.html . J'espère que cela aide.

Cordialement, JP


0 commentaires

1
votes

Je pense que cela peut utiliser comme ceci: xxx


0 commentaires

2
votes

La méthode de fichier unique décrite ci-dessus est agréable mais ne peut pas toujours être utile car l'entrée de LogCat et KMSG peut être retardée en raison de la mise en mémoire tampon. Vous verrez donc probablement un bloc d'entrées KMSG, puis un bloc d'entrées de logcat qui pourraient toujours être entrelacées en temps réel.

Cela dit, vous pourrez peut-être synchroniser le temps KMSG et le temps de LOGCAT en recherchant des messages de suspension de périphérique à KMSG (GREP UTC):

<6> [249485.550811] Suspendez: Saint Suspend, RET = 0 (2012-12-27 16: 16: 46.300872527 UTC)

Comme vous pouvez voir ces entrées dans KMSG Signaler la durée du système actuel Wallclock qui peut ensuite être synchronisé avec la valeur de temps de KMSG. Notez toutefois que la valeur du temps KMSG n'augmente pas lorsque l'appareil est endormi tandis que le temps de la clouterie est évidemment. À cette fin, vous devrez se resynchroniser sur la durée murale sur chaque entrée de suspension et sortir afin d'obtenir le temps de clochal clock correct.


0 commentaires

6
votes

Une autre solution serait similaire à la réponse de JPG, mais dans l'autre sens, rediriger les messages du noyau en logcat. C'est mieux, car trop de messages de logcat pourraient surcharger la console de série (si vous l'avez actif).

Vous pouvez exécuter ceci dans une coquille Android: P>

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


0 commentaires