Ich weiß, dass das Boot-Up-Protokoll durch Herausziehen von Inhalten von kmsg
oder dmesg
bis ADB
erhalten werden kann.
Aber ich weiß nicht, wie man die Shutdown-Logs in Android abruft, da es in Android keinen /var
-Ordner gibt (wo die meisten Desktop-Linux-Distributionen normalerweise ihre Shutdown-Logs speichern).
Wie kann ich die Shutdown-Protokolle in Android erhalten?
Eine Arbeit, die ich für das Sammeln von Shutdown-Logs in Android gefunden habe, ist das Ausführen von adb pull /proc/kmsg C:\Logs.txt
auf dem Host-PC und das Ausschalten des Geräts. Sie erhalten die Protokolle, bis die USB-Kommunikation zwischen dem Host und dem Gerät einrastet! Ich weiß, dass dies nur ein Fall aus den zahlreichen Shutdown-Szenarien ist, aber ich habe keine befriedigenden Antworten für andere Fälle gefunden!
Suchen Sie an einigen Stellen nach:
%Vor%(Diese Liste ist nicht streng Kernel-Protokolle, einschließlich Framework und Anwendungsprotokolle auch, die manchmal auch von Interesse sind)
TL; DR :
Führen Sie den Befehl über adb aus, der logcat und proc / kmsg in eine Datei kopiert und sie weiter ausführt, auch wenn adb die Verbindung mit nohup
, disown
oder setsid
trennt. Wahrscheinlich braucht busybox, braucht auch root und adb root.
setsid cat proc/kmsg > /sdcard/kmsg.txt &
und
logcat -v long -f /sdcard/logcat.txt
(funktioniert nur ohne setsid
)
Sie können auch normale Kopierbefehle in ein Startskript einfügen.
/ TL; DR
Sie können proc/kmsg
und logcat
ständig in eine Datei auf Ihrem Android-Gerät oder einer microSD-Karte kopieren, um die Protokolle auch nach dem Trennen der Verbindung zu erhalten.
Sie benötigen root access und adb root access, damit dies funktioniert. Für Letzteres verwenden Sie die Einstellung in den Entwickleroptionen, wenn Sie eine benutzerdefinierte ROM oder die unsichere App .
Nachdem Sie adb shell
verwendet haben, um Ihre Android-Shell zu erhalten, geben Sie su
ein, um Superuser-Zugriff zu erhalten.
Dann müssen Sie nicht nur ein kaufmännisches Und-Zeichen ( &
) hinter den Befehl setzen, sondern auch sicherstellen, dass der Befehl weiterläuft, nachdem die adb-Verbindung getrennt wurde. Dies geschieht durch nohup
, disown
oder setsid
(siehe hier zur Nutzung).
Wenn es nicht funktioniert, weil Sie diese Befehle nicht haben, müssen Sie busybox .
Siehe meine Frage hier .
Siehe hier , um Logcat- und Kernel-Logs zu erhalten und auszudrucken zu einer Datei oder füge sie zusammen. Die Parameter für den logcat-Befehl finden Sie unter developer.android.com/tools/help/logcat.html.
Am Ende könnten Sie einen Befehl wie setsid cat proc/kmsg > /sdcard/kmsg.txt &
für die Kernel-Nachrichten haben.
Für logcat könnten Sie einen der folgenden Befehle haben: logcat -v long -f /sdcard/logcat.txt
oder logcat -v long > /sdcard/logcat.txt
Ich weiß nicht warum, aber manchmal funktionierte es nicht mit setsid
und es wurde einfach nicht kontinuierlich kopiert, sondern kurz nach Ausführung des Befehls gestoppt. In diesen Situationen erschien es auch bei der Eingabe von jobs
, was sonst nicht der Fall war. Dann funktionierte es einfach ohne setsid
, es blieb nach dem Trennen und Wiederverbinden am Leben. Ich schätze, du musst es einfach versuchen, wenn die Datei immer größer wird. Wenn jemand herausgefunden hat, warum es sich so verhält, wie es ist ... lass es mich wissen und ich werde die Antwort bearbeiten.
Das Hinzufügen der Befehle zu einem Startskript könnte auch für einige eine Lösung darstellen.
Hoffe, das hilft.
Kampfkeks
Tags und Links android linux logging linux-kernel