Der er mange interessante ting i Android-systemloggen, der er nyttigt på mange måder

  • find grundårsager af problemer
  • identificer misbehavende apps

Hvordan kan jeg se og undersøge Android-loggen?

Kommentarer

Svar

Android 4.1 og nyere

Den foretrukne måde er at downloade SDK og bruge adb logcat (kræver aktivering af " udviklerindstillinger " på enheden).

Der er apps tilgængelige til visning af hele systemlogfilen, men de fungerer kun på rodfæstede enheder eller kræver udstedelse af en manuel kommando via adb for at få dem til at fungere. For mere information se se dette spørgsmål.

Android 4.0 og ældre

Du kan enten downloade SDK og brug adb logcat eller få Logcat Extrem fra Google Play Butik, som viser loggen direkte på din telefon.

Kommentarer

  • Alternativt kan du bruge Terminal Emulator med kommandoen " logcat > /sdcard/log.txt" til kontinuerlig skrivning af loggen til en fil på SD Kort. Dette kan hjælpe med at finde ud af problemer med tilfældige genstart.
  • Godt punkt. Nogle telefoner har en tendens til at spam loggen fuld af trivielle oplysninger, så hvis du vil minimere filstørrelsen og dataene, der skal gennemgås, skal du tjekke sektionen " Filtreringslogoutput " på developer.android.com/guide/developing/tools/adb.html#logcat
  • LogCat Apps fungerer ikke ' t arbejde noget med JellyBean. Google ændrede Android API, apps har ' t har tilladelse længere til at læse logfiler fra andre apps end deres egne.
  • Jeg har oprettet et simpelt hjælpeprogram til at indsamle logfiler fra en pc: gist.github.com/hrj/5983971
  • Logcat Extreme er den gode app til se log

Svar

Logfil-placeringer

Der er flere mapper, hvor logfiler (inklusive dem fra nedbrud) vises muligvis – ikke alle er standardiserede (dvs. nogle kan være ROM-specifikke).

  • /data/anr: Nogle sporingsfiler ser ud til at komme her (Dalvik skriver stakspor her på ANR, dvs. “Applikation svarer ikke” aka “Force-Close”; se f.eks. Log uddrag her )
  • /data/dontpanic synes at være en standardplacering (AOSP) og indeholder nogle nedbrudslogfiler inklusive spor (se f.eks. viaForensics og St. ackOverflow )
  • /data/kernelpanics er en anden placering – uden at have haft nogen “kernepanik” på mine Android-enheder, så jeg intet indhold der endnu.
  • /data/panic/panic_daemon.config kan pege på andre konfigurerede placeringer – på min Droid 2 nævner den /sdcard/panic_data/
  • nævnte Droid 2 har også en /data/panicreports mappe (tom her)
  • /data/tombstones kan indeholde flere tombstone_nn filer (hvor nn er en serie, øges med hver nye fil). Da gravsten placeres for de døde, gøres det her for “processer døde ved et uheld” (dvs. styrtede ned) – og det er det, der kaldes “core dumps” på Linux / Unix-systemer. Imidlertid opretter ikke alle apps gravsten; dette skal være eksplicit aktiveret af udvikleren (se Fejlfinding af Android Core Dumps ).

Der kan være nogle flere placeringer, som undslap mig; men da de fleste loggning sker på tmpfs, går disse data tabt ved en genstart, og svarer ikke til OPs-spørgsmålet.

Logkommandoer, der skal bruges sammen med en terminal app (eller adb)

Flere kommandoer kan give dig masser af information. For de fleste af dem er det at anbefale at omdirigere dem til en fil (> filename.ext) eller lede dem gennem et filter (| grep search-for-this ):

Kernelog

Følgende fungerer uden rod:

$ 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

Her kan du f.eks angiv hvilket område du er interesseret i – radio, begivenheder …

# 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> 

Få enhedsoplysninger

Og masser af det: Enhed detaljer, kontooplysninger, tjenester …

$ dumpsys Currently running services: LocationProxyService SurfaceFlinger accessibility account activity <snip> DUMP OF SERVICE account: Accounts: 1 Account {[email protected], 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> 

Alt-i-et

Lav en stor kugle med alt sammen, fra logcat til dumpstate:

$ bugreport > /mnt/sdcard/bugreport.txt 

Jeg er ret sikker på, at du virkelig vil omdirigere den sidste kommando … xD

Noget om tilladelser

PS: Naturligvis kan adgang til disse oplysninger kræve rod, da de fleste kilder er placeret på internt lager.

Kommentarer

  • For at få mere indsigt i adb logcat-kommandoer se her .
  • Eller bare tjek vores logging tag-wiki @testing – der har endnu flere referencer 🙂
  • Linket til " Fejlfinding af Android Core Dumps " er død, kan vi få et alternativ?
  • @Spidey der ' er altid Archive.ORG for denne slags problemer (link går til en arbejdskopi t her).
  • For alle andre som mig, der er nye til Android, skal du først køre $ adb shell for at køre ovenstående kommandoer for at oprette forbindelse til enheden via en terminal. (Sørg selvfølgelig for, at din enhed er sluttet til din computer, og at USB-fejlretning er slået til.)

Svar

A fandt ud af, at CatLog viser Android-loggen lidt bedre end aLogcat. Udover adb logcat er det det, jeg bruger.

Kommentarer

  • Se min kommentar ovenfor, vedrørende LogCat-apps.
  • Jeg har opdateret spørgsmålet. Bemærk, at relative placeringsoplysninger (f.eks. " over " ) kan let blive forældede, da rækkefølgen af svarene kan ændre sig med tiden.

Svar

A metode uden rod, der fungerer selv med nye Android-versioner:

Forudsætninger:

  • Linux, Windows eller Mac
  • USB-kabel til din enhed
  • Android-enhed

Instruktioner:

  1. Installer din enhedsdriver til brug af adb. Alt hvad du behøver finder du her
  2. Download adb eksekverbar til dit operativsystem. Det er en del af Android SDK, men du kan muligvis finde adb eksekverbar individuelt.
  3. Tilslut din Android-enhed.
  4. Aktivér udviklerindstillingerne .
  5. Aktivér USB-fejlretning.
  6. Åbn en kommandopromt (windows) eller terminal (linux / mac). Sådan gør du: På Windows: windows + r> indtast “cmd” (uden anførselstegn)> klik på enter | På Linux: Du ved ikke, hvordan man åbner en terminal? LOL | På Mac: Skriv Terminal i Spotlight og åbn den
  7. CD til det bibliotek, hvor Adb-eksekverbar er placeret. På Windows: Gå til det bibliotek, hvor du downloadede adb-eksekverbar, Shift + højreklik, og vælg “Åbn konsol” (eller lignende) | På Linux / Mac: Højreklik i biblioteket og vælg “Åbn terminal her” (eller blot CD i biblioteket)
  8. Indtast din cmd / terminal: adb devices for at kontrollere, at din enhed er korrekt tilsluttet.
  9. Hvis din enhed er korrekt valgt, skriv adb logcat for at vise den mægtige og magiske logcat aka stacktrace.
  10. Gengiv din fejl (eller hvad som helst) på din enhed.
  11. Læg derefter hele cmd / terminalvinduet ind i en pasta-tjeneste som http://pastebin.com/ og send det til os.

(Mest kopieret fra Leandros )

An svare

Det er placeret i /sdcard/bugreports.

Kommentarer

  • Jeg ' har aldrig haft en sådan mappe på min telefon … er dette specifikt for en producent eller enhed?
  • Fra Logcat – CyanogenMod Wiki : Du kan bruge en magisk tastekombination til at oprette en bugrapportfil i / sdcard / bugreports. Så dette ser ud til at være en ) lidt specifikt (sandsynligvis til CM) og b) ikke svaret på spørgsmålet, da OP ser efter " genereres automatisk " dem.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *