Android:Wie erhalte ich Kernel-Protokolle nach einer Kernel-Panik?
-
13-12-2019 - |
Frage
Ich verwende ein benutzerdefiniertes Android-ROM auf meinem Gerät, auch mit einer benutzerdefinierten boot.img (benutzerdefinierter Kernel + cmdline + ramdisk).Ich möchte nun nach einer Kernel-Panic sofort die Kernel-Logs einsehen können, kann aber leider keine serielle Konsole nutzen.
Die guten Nachrichten:Es scheint einige Quellen/Module im Linux-Kernel von Android zu geben, die genau für diesen Zweck geschrieben wurden.In meiner .config-Datei für den Kernel sind beispielsweise folgende Zeilen aktiviert:
CONFIG_ANDROID_RAM_CONSOLE=y
CONFIG_ANDROID_RAM_CONSOLE_ENABLE_VERBOSE=y
CONFIG_APANIC=y
CONFIG_APANIC_PLABEL="oem_log"
Mein Problem ist:Nachdem ich eine Kernel-Panik erzwungen habe, um dies zu testen, d.h.durch Laden eines einfachen Panic-Kernel-Moduls mit insmod panic.ko
, es scheint, dass kein Protokoll in das genannte MTD geschrieben wurde oem_log (die auf meinem Gerät vorhanden ist).Zweitens enthält der RAM auch nach dem Neustart keine Protokolle, da er scheinbar geleert ist – oder die Protokolle werden auch nicht geschrieben.
Wie kann ich also nach einer Panik die Kernel-Protokolle abrufen?Außerdem wäre es hilfreich, wenn es eine Möglichkeit gäbe, APANIC auf dem laufenden System zu testen.Vielleicht mithilfe des Kernel-Debug-Systems?Im Moment bin ich ziemlich neu in diesem Bereich.
Vielen Dank im Voraus für jede Hilfe!
Lösung
wie für mich,
generasacodicetagpre.nach dem Neustart (durch den Kernel-Panik während des InsMods verursacht) listet Nachrichten, die für den Absturz relevant sind, wie
generasacodicetagpre.Sie können also zumindest versuchen.Ich arbeite mit Linux 3.0.31-G4F6D371 auf Galaxy Nexus.
Andere Tipps
Es scheint bei Android-7.0 oder höher zu sein, das Last_KMESG-Protokoll wird in: / sys / fs / pstore / console-ramoops verschoben, also versuchen Sie:
generasacodicetagpre.es funktioniert gut für mich auf nexus-5x
Wie wäre es mit /data/dontpanic
Ordner?Nachdem eine Kernel-Panik aufgetreten ist, können Sie ein USB-Kabel mit Ihrem Android-Gerät verbinden und die Dateien in diesem Ordner überprüfen ADB
.
Ich habe festgestellt, dass dieser Ordner einige enthält apanic
Dateien nach einer Kernel-Panik.Wenn beispielsweise gerade eine Kernel-Panik aufgetreten ist und Sie den Ordner überprüfen, finden Sie möglicherweise diese beiden Dateien:
apanic_console
apanic_threads
Das erfahren Sie in apanic_threads
welcher Thread/Prozess läuft, wenn die Kernel-Panic auftritt.In apanic_console
Möglicherweise erfahren Sie weitere Informationen wie den Stack-Trace und die Werte einiger kritischer Register: PC
, LR
, usw.
Sie helfen Ihnen dabei, mit dem Debuggen zu beginnen.
Android erstellt eine RAM-Konsole und versucht, den letzten Kernel-Nachrichtenpuffer für Sie in RAM zu speichern (vorausgesetzt, dass die Macht nicht ausgeht).Sie können auf diese Datei über die PROC-Schnittstelle zugreifen, und auf meinem System ist es weltweit lesbar:
generasacodicetagpre.Weitere Informationen finden Sie in den Kernel-Code @ Treiber / Inszenierung / Android / RAM_CONSOLE.C
Ich habe ein ähnliches geschützt ein Problem des Sammelns von Herunterfahren von Protokollen in Android.Ich hatte diese Frage lange zurückgegeben und es hat 2 Ansätze.Ich benutze den zweiten, als der erste nicht für mich funktioniert.Hier ist die Frage
Wo wird Android Store heruntergefahrene Protokolle heruntergefahren?
hoffe das hilft.
Das Linux-Kernel-Protokoll kann mit dem Befehl dmesg
aufgerufen werden.Sie können über das Android-Protokollierungssystem lesen hier .