Wie sync-Kernel Zeit-und logcat Zeit?
Arbeite ich auf einem Android-Handy basiert auf dem Linux-Kernel. Ich bin mit kmsg
für die kernel-logs und adb logcat -v time
für platform-Protokolle. Das problem ist das Kernel-logs zeigt die Zeit von 0.000000
und logcat zeigt von Beginn der system-Zeit ( Zum Beispiel, wenn die Zeit auf dem Handy ist 10.43.00, werde es zeigen sich die ersten melden, die aus dieser Zeit )
Nun bin ich nicht in der Lage zu vergleichen, die Ereignisse aus dieser 2 Protokolle, da die Basis ( Referenz) unterscheidet. Kann mir jemand freundlicherweise sagen, wie synchronisieren Sie diese 2 mal??
InformationsquelleAutor Pavan Manjunath | 2011-06-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Pavan,
Vielleicht können Sie Tags für Ihre logcat druckt mit der Zeit seit dem letzten Booten? Dies sollte näher an der Zeit gezeigt, in der kmsg.
Zeit seit dem letzten Booten abgerufen werden können
elapsedRealtime()
.elapsedRealtime()
in jeder melden! Also ich habe in logcat-code. Zeit, die Formatierung erfolgt inandroid_log_formatLogLine()
imlogprint.cpp
. AberelapsedRealtime()
ist in java und ich weiß nicht, wie man es von einer cpp-Datei. Ich bin nicht in der Lage, ein äquivalent finden, dass ich verwenden können, von dieser cpp-DateiInformationsquelleAutor Will Tate
Andere Lösung wäre, ähnlich wie jpg ' s, die Antwort, aber in die andere Richtung umleiten
die kernel-Meldungen in logcat. Das ist besser, weil viel zu viele logcat-Nachrichten überlasten Sie die serielle Konsole (falls aktiv).
können Sie folgenden Befehl in ein android-shell:
oder diese in eine host-shell:
Das erste mal, wenn Sie starten Sie den Befehl sehen Sie alle aktuellen dmesg-Nachrichten an einem Ort, aber keine weiteren Nachrichten interleaved, wenn Sie erscheinen.
und dann prüfen, logcat in eine andere shell. Wenn Sie prüfen logcat mit -v, dann die kernel-Meldungen enthalten sowohl das logcat und die kernel-Zeitstempel. Natürlich kann es zu Verzögerungen zwischen den beiden.
Weitere, sogar noch einfachere Möglichkeit, um zu sehen, Nachrichten interleaved wäre:
Aber in diesem Fall ist es ein wenig schwerer zu identifizieren Meldungen aus dem kernel, und man nicht sagen kann, wie kernel-Zeitstempel beziehen sich auf logcat Zeitstempel.
InformationsquelleAutor Purdea Andrei
können Sie eine einzelne Datei erstellen, die sowohl kernel-und Plattform-Protokolle wie folgt:
können Sie unterscheiden, die Protokolle mit Zeitstempel in der Plattform protokolliert. Und dann ziehen Sie die Datei auf Ihrem lokalen Laufwerk mit
Finden http://jai-tech.blogspot.com/2012/01/taking-kernel-and-platform-logs-of.html . Hoffe, das hilft.
Grüße,
JP
InformationsquelleAutor jaiprakashgogi
Die einzige Datei, die oben beschriebene Methode ist zwar nett aber nicht immer nützlich sein, wie die Eingabe von logcat und kmsg sein könnte, verzögert sich aufgrund der Pufferung. So werden Sie wahrscheinlich sehen, ein block von kmsg-Einträge und dann ein block von logcat-Einträge, die möglicherweise noch im interleaved-in Echtzeit.
Sagte, Sie könnten in der Lage sein, zu synchronisieren kmsg Zeit und logcat Zeit, indem man für das Gerät anhalten von Nachrichten in kmsg (grep UTC):
<6>[249485.550811] anhalten: beenden auszusetzen, ret = 0 (2012-12-27 16:16:46.300872527 UTC)
Wie Sie sehen können die Einträge in kmsg Bericht das aktuelle system Wanduhr Zeit, die dann synchronisiert werden, mit der kmsg Zeit Wert. Beachten Sie jedoch, dass die kmsg-Zeit-Wert nicht erhöht, wenn das Gerät eingeschlafen ist, während die Wanduhr die Zeit offensichtlich nicht. Zu diesem Zweck müssen Sie erneut synchronisieren auf die Wanduhr Zeit bei jedem anhalten ein-und Ausfahrt, um die richtige Wanduhr Zeit.
InformationsquelleAutor smichak
Ich denke, man kann es verwenden, wie diese:
InformationsquelleAutor Jerry.CUi