Hallo
Aus gegebenem Anlass (@engelbrecht ) hier mal ein Step-by-Step bzw. ein "Step-by-OOPS" (wenn man unbedarfte aber investigative Herangehensweise bevorzugt ) zur Logcat Erstellung
(Quellen z.B.: XDA ADB, AOSP logcat, logcat tutorial, logcat infos, XDA tutorial, noch ein Guide, aehh.. jo.
Post war eigentlich gedacht als Antwort auf Engelbrechts Anfrage, aber waere im Vorab-Forum gewesen, daher hier besser aufgehoben, weil besser verlinkbar. Und ist auch etwas groesser geworden, sehe ich gerade.. )
Zuerst braucht man einen ADB Zugang (Hauptlink in Englisch, ich uebersetz das schnell weiter unten)
(Ich gehe mal einfach davon aus, dass du das noch nie(?) gemacht? hast, und das du Windows (10?) benutzt?)
Kommt, wie gesagt, ganz genau darauf an, "was" man "wie" mitloggen moechte
Vielleicht hilft's
Aus gegebenem Anlass (@engelbrecht ) hier mal ein Step-by-Step bzw. ein "Step-by-OOPS" (wenn man unbedarfte aber investigative Herangehensweise bevorzugt ) zur Logcat Erstellung
(Quellen z.B.: XDA ADB, AOSP logcat, logcat tutorial, logcat infos, XDA tutorial, noch ein Guide, aehh.. jo.
Post war eigentlich gedacht als Antwort auf Engelbrechts Anfrage, aber waere im Vorab-Forum gewesen, daher hier besser aufgehoben, weil besser verlinkbar. Und ist auch etwas groesser geworden, sehe ich gerade.. )
Zuerst braucht man einen ADB Zugang (Hauptlink in Englisch, ich uebersetz das schnell weiter unten)
(Ich gehe mal einfach davon aus, dass du das noch nie(?) gemacht? hast, und das du Windows (10?) benutzt?)
- Hol dir die Windows Platform-Tools und entpack sie z.B. auf den Schreibtisch, oder auf D:\ADB
- Suche in der Startleistensuchfunktion nach CMD und starte die Kommandozeile (Das Ganze funktioniert natuerlich auch in einer Powershell dann muss vor jeden ADB Befehl noch ein ./ )
- Der Prompt zeigt dir an, in welchem Verzeichnis du jetzt gerade bist, normalerweise "C:\Windows\System32>". Das muessen wir auf den ADB Pfad aendern:
Tippe in CMD also ([SPACE] = 1 Leerzeichen):
cd[SPACE]
und ziehe einfach den entpackten ADB Ordner in CMD, dann sollte der Pfad kopiert werden z.B.:
cd D:\ADB
und bestaetige mit Enter/Return.
Der Prompt aendert sich aber erst, wenn du noch:
D:
eingibst und mit Enter/Return bestaetigst (Alternativ kommt man direkt von "C:\Windows\System32>" nach "D:\ADB>" mit dem Befehl: cd /d D:\ADB).
Jetzt sollte dein Prompt z.B. so aussehen "D:\ADB>" - Jetzt die Entwicklereinstellungen aktivieren: Einstellungen > Ueber das Telefon > Build-Nummer (am Ende der Liste) > 7x auf Build Nummer tippen, evtl. Displaysperr-PIN nochmal eingeben, dann sollte "Du bist jetzt Entwickler" aufpoppen.
- In den Entwicklereinstellungen, die man unter Einstellungen > System > Erweitert > Entwickleroptionen findet, etwas runterscrollen (lange Liste, hier sollte man nichts verstellen von dem man keine Ahnung hat) bis zu dem Punkt "USB-Debugging" und den aktivieren.
- Waehrend man noch in den Entwickleroptionen ist, das 6mq nun anschliessen.
In den 6mq Statusleisteninfos oben sollte eine Meldung "Android-System · USB-Dateiuebertragung aktiviert" stehen, wenn hinter dem "·" irgendwas anderes steht, z.B. "Geraet wird ueber USB aufgeladen" tipp auf den Klapp-Pfeil rechts daneben und tipp auf "Fuer weitere Optionen tippen" und stell USB um auf "Dateiuebertragung".
(Ueberpruef mal im Dateiexplorer ob Windows dein 6mq als Laufwerk auflistet und ob du vom "Internen gemeinsamen Speicher" irgendeine Datei auf den Desktop oder Laufwerk D: runterkopieren kannst!
Es koennte sein, wenn dein 6mq noch nie an Windows ueber USB angeschlossen und fuer Dateiuebertragung benutzbar war, das erst USB-Treiber installiert werden muessen!
Wenn die Window-Treibersuche fehlschlaegt, also keine (Android) USB-Treiber vorhanden sind, musst du entweder die generischen von Google benutzen oder nimm den hier von Samsung, der funktioniert bei mir ohne Probleme). - Wenn dein 6mq im Dateiexplorer auftaucht und Dateiuebertragung vom internen Speicher (nun) funktioniert wechsele wieder zu CMD und fuehre
ADB devices
aus. Nun sollten zwei Dinge passieren:- in CMD sollte z.B. sowas ausgegeben werden:
* daemon not running; starting now at tcp:5037
* daemon started successfully
List of devices attached
S6MQ(11-stellige Nummer) unauthorized
Wenn du einen Firewall-Alarm bekommst > permanent erlauben! (der ADB Server laeuft nur auf deinem Rechner/telefoniert nirgends "raus" )
- Auf deinem 6mq sollte ein Authorisierungsdialog aufpoppen der z.B. so aussieht:
Dort dann "Erlauben"
(Wenn diese rot markierte Checkbox aktiviert wird, und ein authorisierter Rechner kompromittiert waere (gehackt/virenbefallen/Remote-Zugriff, etc) waere das natuerlich ein Sicherheitsaspekt. In allen anderen Faellen ist eine permanente Debugging-Authorisierung von Vorteil, da man auch bei Problemen mit Android selbst wenigstens ADB/USB Zugriff bekaeme und evtl. reparieren/Dateien runterkopieren koennte bevor man zu einem Factory Reset gezwungen waere)
- in CMD sollte z.B. sowas ausgegeben werden:
- Nach Authorisierung sollte mit:
ADB devices
nun folgendes erscheinen:
List of devices attached
S6MQ(11-stellige Nummer) device
Wenn nicht, kann man mit
ADB kill-server
einen alten Server beenden. Sobald man jetzt nochmal einen ADB Befehl schickt, wird ein neuer ADB Server gestartet, bis man ihn wieder mit adb kill-server beendet.
Muss man sogar immer(?) machen, wenn es Dateioperationen gab, vorher kann man das 6mq nicht "sicher entfernen".
- Nun waere man endlich bereit, ein Logcat zu erstellen
Obiger Quell-Link "AOSP logcat" listet die offizielle Dokumentation, aber man kann sich auch alles mit:
adb logcat --help
anzeigen lassen.
Wenn dich jemand um eine logcat-Datei bittet, sollte auch immer mit angegeben werden, "wie" und aus "welchem Bereich" diese Protokolldatei aufgezeichnet werden soll(!)
Wenn nichts angegeben wird, erhaelt man laut offizieller Doku die Protokolle aus den Bereichen:- main: View the main log buffer (default) does not contain: system and crash log messages.
- system: View the system log buffer (default).
- crash: View the crash log buffer (default).
Weiterhin gibt es noch die Bereiche:
- radio: View the buffer that contains radio/telephony related messages.
- events: View the interpreted binary system event buffer messages.
- all: View all buffers.
Grundsaetzlich laeuft die Protokollierung im Android System permanent, mit diesen Logcat Befehlen startet man also einen Mitschnitt des permanenten Textflusses und muss ihn dann auch irgendwann wieder beenden
Befehl zum Stoppen (im CMD Fenster): STRG+C
Am besten also die abstuerzende App oder Aktion, etc erst ausfuehren wenn die logcat Aufzeichnung laeuft und noch ein, zwei Sekunden weiterlaufen lassen, nachdem man eine Absturzmeldung, etc besstaetigt hat
Und wenn es keine genauen Angaben gibt, wuerde ich folgenden Befehl verwenden (lass mich da gerne korrigieren):
adb logcat -v long -b all *:W -f /sdcard/log_warning_ALL.txt
- Hier noch ein paar weitere Beispiele wie man logcat benutzen kann:
adb logcat -v long -b all *:V -f /sdcard/log_ALL.txt
schreibt ALLE Eintraege, aus allen Bereichen komplett ungefiltert nach Prio in die Datei namens "log_ALL.txt" in die Hauptebene des internen Speichers.
Hier wuerde ich fuer einen Test (wirklich) nur ein, zwei Sekunden mitloggen und STRG+C druecken, denn mit dem Befehl waechst die Logdatei am schnellsten undist am unuebersichtlichsten.
(Hab das gerade mal eine zeitlang ausprobiert, ein paar Aktionen auf dem 6mq ausgefuehrt, soo schnell waechst die Datei auch wieder nicht, uebersichtlich ist trotzdem anders )
adb logcat -v long -b radio -f /sdcard/radiolog.txt
Schreibt eine Datei namens "radiolog.txt" in die Hauptebene des internen Speichers, der Inhalt sieht dann beispielsweise so aus und greift nur (ungefiltert) aus dem Bereich "radio" ab:
[ 01-03 12:55:29.279 804: 804 D/TelephonyManager ]No /proc/cmdline exception=java.io.FileNotFoundException: /proc/cmdline: open failed: EACCES (Permission denied)
[ 01-03 12:55:29.279 804: 804 D/TelephonyManager ]
/proc/cmdline=
[ 01-03 12:55:32.768 1398: 1398 I/chatty ]
uid=1001(radio) main expire 23 lines
Es gibt verschiedene Filtermoeglichkeiten der logcat Ausgabe, mit "Verbose" (niedrigste Prioritaet) wird ALLES gelistet, auch Protokolleintraege, die voellig normal sind, mit "Warning" werden alle Eintraege gelistet, die eine Warnung oder hoehere Prio besitzen (Error und Fatal):- V: Verbose (lowest priority)
- D: Debug
- I: Info
- W: Warning
- E: Error
- F: Fatal
- S: Silent (highest priority, on which nothing is ever printed)
Moechte man den Bereich radio nach "Warning", "Error" oder "Fatal" filtern, so sehen die Befehle so aus (immer darauf achten, dass man eine korrekt benannte Ausgabedatei definiert):
adb logcat -v long -b radio *:W -f /sdcard/radiolog_warning.txt
adb logcat -v long -b radio *:E -f /sdcard/radiolog_error.txt
adb logcat -v long -b radio *:F -f /sdcard/radiolog_fatal.txt
Obiger "radio" Befehl, nur noch mit "Fatal" Prio Meldungen erlaubt, ergibt folgende Ausgabe:
[ 01-03 12:55:35.722 1210: 1210 E/TelephonyManager ]IMSI error: Subscriber Info is null
[ 01-03 12:55:38.811 1210: 1317 E/PHONE ]
ServiceState.getRadioTechnology() DEPRECATED will be removed *******
[ 01-03 12:55:39.049 1210: 2034 E/PHONE ]
ServiceState.getRadioTechnology() DEPRECATED will be removed *******
Man kann auch nach PiDs filtern (Prozess-ID, also ein Systemtask, den man vorher aber erst indentifizieren muss, zu welcher App eine bestimmte PiD gehoert, etc), nach Apps oder global verfuegbaren "Tools" z.B:
adb logcat -v long -b all ActivityManager:V -f /sdcard/log_verbose_activitymanager.txt
womit vom letzten Systemstart (12:55) an alle Eintraege des "ActivityManager"s, aufgelistet werden, sieht dann so aus:
--------- beginning of radio
[ 01-03 12:55:29.279 804: 804 D/TelephonyManager ]
No /proc/cmdline exception=java.io.FileNotFoundException: /proc/cmdline: open failed: EACCES (Permission denied)
--------- beginning of system
[ 01-03 12:55:34.638 1230: 1394 I/storaged ]
storaged: Start
[ 01-03 12:55:34.862 1923: 1923 I/imsrcsd ]
Uce Service HAL is starting up...
--------- beginning of events
[ 01-03 14:08:57.732 1210: 1419 I/sysui_multi_action ]
[757,856,758,2,806,android,857,com.android.server.wm.AlertWindowNotification - com.digibites.accubattery,858,1]
Kommt, wie gesagt, ganz genau darauf an, "was" man "wie" mitloggen moechte
Vielleicht hilft's
Zuletzt bearbeitet: