Wie kann ich das Android-Protokoll anzeigen und untersuchen?


109

Das Android-Systemprotokoll enthält viele interessante Informationen, die in vielerlei Hinsicht hilfreich sind

  • Finden Sie die Ursachen von Problemen
  • Apps identifizieren, die sich schlecht verhalten

Wie kann ich das Android-Protokoll anzeigen und untersuchen?


Kommentare sind nicht für eine längere Diskussion gedacht. Diese Unterhaltung wurde in den Chat verschoben .
Matthew Read

Antworten:


59

Android 4.1 und neuer

Der bevorzugte Weg ist, das SDK herunterzuladen und zu verwenden adb logcat(erfordert die Aktivierung der "Entwickleroptionen" auf dem Gerät).

Es gibt Apps, mit denen das gesamte Systemprotokoll angezeigt werden kann. Sie funktionieren jedoch nur auf gerooteten Geräten, oder Sie müssen einen manuellen Befehl über eingeben adb, damit sie funktionieren. Weitere Informationen finden Sie in dieser Frage.

Android 4.0 und älter

Sie können entweder das SDK herunterladen und Logcat Extrem verwenden adb logcatoder im Google Play Store herunterladen. Dort wird das Protokoll direkt auf Ihrem Telefon angezeigt .


2
Alternativ können Sie den Terminal Emulator mit dem Befehl "logcat> /sdcard/log.txt" verwenden, um das Protokoll fortlaufend in eine Datei auf der SD-Karte zu schreiben. Dies kann helfen, Probleme mit zufälligen Neustarts herauszufinden.
Chahk

Guter Punkt. Einige Telefone neigen dazu, das Protokoll mit trivialen Informationen zu spammen. Wenn Sie also die Dateigröße und die zu durchsuchenden Daten minimieren möchten, lesen Sie den Abschnitt "Filtern der Protokollausgabe" unter developer.android.com/guide/developing/tools/adb.html #logcat
onik

LogCat Apps funktionieren mit JellyBean nicht. Google hat die Android-API geändert. Apps haben nicht mehr die Berechtigung, Protokolle von anderen Apps als ihren eigenen zu lesen.
Leandros

Ich habe ein einfaches Dienstprogramm zum Sammeln von Protokollen von einem PC erstellt: gist.github.com/hrj/5983971
HRJ

Logcat Extreme ist die nette App für siehe Log
Arpit Patel

57

Speicherorte für Protokolldateien

Es gibt mehrere Verzeichnisse, in denen möglicherweise Protokolle (einschließlich der von Abstürzen) angezeigt werden - nicht alle sind standardisiert (dh einige sind möglicherweise ROM-spezifisch).

  • /data/anr: Einige Trace-Dateien scheinen hierher zu kommen (Dalvik schreibt Stack-Traces hier auf ANR, dh "Application Not Responding" oder "Force-Close"; siehe zB Log-Auszüge hier )
  • /data/dontpanicscheint ein Standardspeicherort (AOSP) zu sein und enthält einige Absturzprotokolle einschließlich Traces (siehe z. B. viaForensics und StackOverflow )
  • /data/kernelpanics ist ein anderer Ort - da ich auf meinen Android-Geräten keine "Kernel-Panik" hatte, habe ich dort noch keinen Inhalt gesehen.
  • Das /data/panic/panic_daemon.configkann auf andere konfigurierte Orte verweisen - auf meinem Droid 2 wird darauf hingewiesen/sdcard/panic_data/
  • erwähnte Droid 2 hat auch ein /data/panicreportsVerzeichnis (hier leer)
  • /data/tombstoneskann mehrere tombstone_nnDateien enthalten (wobei nnes sich um eine serielle Datei handelt, die mit jeder neuen Datei größer wird). Da Grabsteine ​​für die Toten gelegt werden, geschieht dies hier für "zufällig gestorbene Prozesse" (dh abgestürzt) - und dies wird auf Linux / Unix-Systemen als "Core-Dumps" bezeichnet. Nicht alle Apps erstellen jedoch Tombstones. Dies muss vom Entwickler explizit aktiviert werden (siehe Debuggen von Android Core Dumps ).

Es könnte noch einige Orte geben, die mir entgangen sind. Da die meisten Protokollierungen jedoch durchgeführt werden tmpfs, gehen diese Daten bei einem Neustart verloren und stimmen nicht mit der OP-Frage überein.

Protokollbefehle zur Verwendung mit einer Terminal-App (oder ADB)

Mit mehreren Befehlen können Sie unzählige Informationen abrufen. Für die meisten von ihnen ist es empfehlenswert, sie in eine Datei umzuleiten ( > filename.ext) oder durch einen Filter zu leiten ( | grep search-for-this):

Kernel-Protokoll

Folgendes funktioniert ohne root:

$ dmesg
<6>[82839.126586] PM: Syncing filesystems ... done.
<7>[82839.189056] PM: Preparing system for mem sleep
<4>[82839.189361] Freezing user space processes ... (elapsed 0.05 seconds) done.
<4>[82839.240661] Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
<snip>

Logcat

Hier können Sie zB angeben, für welchen Bereich Sie sich interessieren - Radio, Events ...

# logcat -b events
I/am_create_service( 3457): [1085416560,nitro.phonestats/.widget.WidgetProvider4x1$WidgetUpdateService4x1,,3721]
I/am_destroy_service( 3457): [1085416560,nitro.phonestats/.widget.WidgetProvider4x1$WidgetUpdateService4x1,3721]
I/notification_cancel( 3457): [nitro.phonestats,4,0] 
<snip>

Geräteinformationen abrufen

Und jede Menge davon: Gerätespezifikationen, Kontoinformationen, Services ...

$ dumpsys
Currently running services:
  LocationProxyService
  SurfaceFlinger
  accessibility
  account
  activity
<snip>
DUMP OF SERVICE account:
Accounts:
  1 Account {name=xxxxxxx@googlemail.com, type=com.google}
<snip> 

$ dumpstate
========================================================
== dumpstate: 2012-08-18 23:39:53
========================================================

Build: Gingerbread GWK74 - CyanogenMilestone2
Bootloader: 0x0000
Radio: unknown 
<snip>
------ MEMORY INFO (/proc/meminfo) ------
MemTotal: 487344 kB
MemFree: 10436 kB 
<snip>

Alles in einem

Bilden Sie einen großen Ball mit allem, von logcat bis dumpstate:

$ bugreport > /mnt/sdcard/bugreport.txt

Ich bin mir ziemlich sicher, dass Sie den letzten Befehl wirklich umleiten möchten ... xD

Irgendwas mit Berechtigungen

PS: Für den Zugriff auf diese Informationen ist möglicherweise Root erforderlich, da sich die meisten Quellen im internen Speicher befinden.


Weitere Informationen zu adb logcat-Befehlen finden Sie hier .
Testen

Oder schauen Sie einfach in unser Logging-Tag-Wiki @testing - das hat noch mehr Referenzen :)
Izzy

Der Link für "Debuggen von Android Core Dumps" ist nicht mehr verfügbar. Können wir eine Alternative finden?
Spidey

1
@Spidey es gibt immer Archive.ORG für diese Art von Problem (Link geht zu einer Arbeitskopie dort).
Izzy

12

Es wurde festgestellt, dass CatLog das Android-Protokoll etwas besser anzeigt als aLogcat. Außerdem adb logcatbenutze ich das.


Siehe meinen obigen Kommentar zu LogCat-Apps.
Leandros

2
Ich habe die Frage aktualisiert. Bitte beachten Sie, dass relative Positionsinformationen (z. B. "oben") leicht veraltet sein können, da sich die Reihenfolge der Antworten mit der Zeit ändern kann.
Flow

3

Eine Methode ohne root, die auch mit neuen Android-Versionen funktioniert:

Voraussetzungen:

  • Linux, Windows oder Mac
  • USB-Kabel für Ihr Gerät
  • Android-Gerät

Anleitung:

  1. Installieren Sie Ihren Gerätetreiber für die Verwendung von adb. Alles was Sie brauchen, finden Sie hier
  2. Laden Sie die ausführbare Datei adb für Ihr Betriebssystem herunter. Es ist Teil des Android SDK, aber möglicherweise finden Sie die ausführbare Datei adb einzeln.
  3. Verbinden Sie Ihr Android-Gerät.
  4. Aktivieren Sie die Entwickleroptionen .
  5. Aktivieren USB-Debugging.
  6. Öffnen Sie eine Eingabeaufforderung (Windows) oder ein Terminal (Linux / Mac). Vorgehensweise: Unter Windows: Windows + r> Geben Sie "cmd" (ohne Anführungszeichen) ein> klicken Sie auf die Eingabetaste | Unter Linux: Sie wissen nicht, wie Sie ein Terminal öffnen sollen? LOL | Auf Mac: Geben Sie Terminalin Spotlight ein und öffnen Sie es
  7. CD in das Verzeichnis, in dem sich die ausführbare Datei von adb befindet. Unter Windows: Wechseln Sie zu dem Verzeichnis, in das Sie die ausführbare Datei von adb heruntergeladen haben, und wählen Sie "Open Console" (oder eine ähnliche Option) Unter Linux / Mac: Klicken Sie mit der rechten Maustaste in das Verzeichnis und wählen Sie "Open Terminal here" (oder legen Sie einfach eine CD in das Verzeichnis ein).
  8. Geben Sie Ihr Cmd / Terminal ein adb devices, um zu überprüfen, ob Ihr Gerät richtig angeschlossen ist.
  9. Wenn Ihr Gerät richtig ausgewählt ist, geben Sie es ein adb logcat, um das mächtige und magische Logcat aka Stacktrace anzuzeigen.
  10. Reproduzieren Sie Ihren Fehler (oder was auch immer) auf Ihrem Gerät.
  11. Fügen Sie anschließend das gesamte cmd / terminal-Fenster in einen Einfügedienst wie http://pastebin.com/ ein und senden Sie es an uns.

(Meist aus kopiert Leandros )


2

Die kostenlose App SysInfo ( Projektseite ) zeigt die Systemprotokolle an und komprimiert einen vollständigen Systembericht, um ihn per E-Mail, Dropbox, NFC usw. zu senden. Ganz zu schweigen von vielen anderen interessanten Systeminformationen.


(Ja, ich bin fast ein Jahr zu spät, aber dieser muss erwähnt werden).
JRobert

Beide Links sind jetzt defekt.
jk7

Der zweite Link (Projektseite) funktioniert bei mir immer noch, aber die letzten Einträge stammen aus dem Jahr 2010. Seitdem hat Android irgendwann die Funktionalität von Sysinfo beeinträchtigt.
JRobert

-1

Es befindet sich in /sdcard/bugreports.


3
Ich habe noch nie einen solchen Ordner auf meinem Handy gehabt ... ist dieser spezifisch für einen Hersteller oder ein Gerät?
Matthew Read

2
Aus Logcat - CyanogenMod Wiki : Sie können eine magische Tastenkombination verwenden, um eine Fehlerberichtdatei in / sdcard / bugreports zu erstellen. Dies scheint also a) etwas spezifisch zu sein (wahrscheinlich für CM) und b) nicht die Antwort auf die Frage, da das OP nach "automatisch generierten" sucht.
Izzy
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.