Logcat-Guide (am Beispiel 6mq unter Windows 10)

Martin S.

Original poster
SHIFT Friend
15 Februar 2020
1.178
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 (y)
(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?)
  1. Hol dir die Windows Platform-Tools und entpack sie z.B. auf den Schreibtisch, oder auf D:\ADB
  2. Suche in der Startleistensuchfunktion nach CMD und starte die Kommandozeile (Das Ganze funktioniert natuerlich auch in einer Powershell (y) dann muss vor jeden ADB Befehl noch ein ./ )
  3. 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>"
  4. 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.
  5. 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.
  6. 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).
  7. 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" (y) )

    • Auf deinem 6mq sollte ein Authorisierungsdialog aufpoppen der z.B. so aussieht:

      Screenshot_20210103-141456_System-UI.png

      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)

  8. 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".

  9. 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 (y)

      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

  10. 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 😅 und ist 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 (y)
 
Zuletzt bearbeitet:
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 (y)
(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?)
  1. Hol dir die Windows Platform-Tools und entpack sie z.B. auf den Schreibtisch, oder auf D:\ADB
  2. Suche in der Startleistensuchfunktion nach CMD und starte die Kommandozeile (Das Ganze funktioniert natuerlich auch in einer Powershell (y) dann muss vor jeden ADB Befehl noch ein ./ )
  3. 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>"
  4. 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.
  5. 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.
  6. 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).
  7. 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" (y) )

    • Auf deinem 6mq sollte ein Authorisierungsdialog aufpoppen der z.B. so aussieht:

      Anhang anzeigen 2255

      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)
  8. 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".

  9. 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 (y)

      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
  10. 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 😅 und ist 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:



    Es gibt verschiedene Filtermoeglichkeiten der logcat Ausgabe, mit "Verbose" (niedrigste Prioritaet) wird ALLESgelistet, 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:



      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:

Kommt, wie gesagt, ganz genau darauf an, "was" man "wie" mitloggen moechte 🙂

Vielleicht hilft's (y)
Danke für die Anleitung. Hat wunderbar funktioniert
 
  • Like
Reaktionen: Martin S.