Det er mange interessante ting i Android-systemloggen, som er nyttig på mange måter
- finn rotårsaker av problemer
- identifisere apper som ikke oppfører seg
Hvordan kan jeg se og undersøke Android-loggen?
Kommentarer
- Kommentarer er ikke for utvidet diskusjon; denne samtalen er flyttet til chat .
Svar
Android 4.1 og nyere
Den foretrukne måten er å laste ned SDK og bruke adb logcat
(krever å aktivere " utvikleralternativer " på enheten).
Det er apper tilgjengelig for viser hele systemloggen, men de fungerer bare på forankrede enheter eller krever en manuell kommando via adb
for å få dem til å fungere. For mer informasjon se se dette spørsmålet.
Android 4.0 og eldre
Du kan enten laste ned SDK og bruk adb logcat
eller få Logcat Extrem fra Google Play Butikk, som viser loggen direkte på telefonen din.
Kommentarer
- Alternativt kan du bruke Terminal Emulator med kommando " logcat > /sdcard/log.txt" for kontinuerlig skriving av loggen til en fil på SD Kort. Dette kan hjelpe deg med å finne ut av problemer med tilfeldige omstart.
- Bra poeng. Noen telefoner har en tendens til å spamme loggen full av triviell informasjon, så hvis du ønsker å minimere filstørrelsen og dataene som skal gå gjennom, sjekk ut delen " Filtreringsloggutgang " på developer.android.com/guide/developing/tools/adb.html#logcat
- LogCat Apps ikke ' t jobbe noe med JellyBean. Google endret Android API, apper har ikke ' t lenger tillatelse til å lese logger fra andre apper enn sine egne.
- Jeg har laget et enkelt verktøy for å samle inn logger fra en PC: gist.github.com/hrj/5983971
- Logcat Extreme er den fine appen for se logg
Svar
Loggfilplasseringer
Det er flere kataloger der logger (inkludert de fra krasj) kan vises – ikke alle er standardiserte (dvs. at noen kan være ROM-spesifikke).
-
/data/anr
: Noen sporingsfiler ser ut til å komme hit (Dalvik skriver stakkspor her på ANR, dvs. «Application Not Responding» aka «Force-Close»; se f.eks. Loggutdrag her ) -
/data/dontpanic
ser ut til å være et standard sted (AOSP), og inneholder noen krasjlogger inkludert spor (se f.eks. viaForensics og St. ackOverflow ) -
/data/kernelpanics
er et annet sted – uten å ha hatt «kjernepanikk» på Android-enhetene mine, så jeg ikke noe innhold der ennå. -
/data/panic/panic_daemon.config
kan peke på andre konfigurerte steder – på Droid 2 nevner det/sdcard/panic_data/
- nevnte Droid 2 har også en
/data/panicreports
katalog (tom her) -
/data/tombstones
kan inneholde fleretombstone_nn
filer (mednn
som en serie, økt med hver nye fil). Når gravsteiner plasseres for de døde, gjøres det her for «prosesser som døde ved et uhell» (dvs. krasjet) – og det er det som omtales som «core dumps» på Linux / Unix-systemer. Imidlertid lager ikke alle apper gravsteiner; dette må eksplisitt aktiveres av utvikleren (se Feilsøking av Android Core Dumps ).
Det kan være noen flere steder som unnslapp meg; men da det meste logges på tmpfs
, går disse dataene tapt med en omstart, og de samsvarer ikke med OPs-spørsmålet.
Loggkommandoer som skal brukes med en terminal app (eller adb)
Flere kommandoer kan gi deg massevis av informasjon. For de fleste av dem er det å anbefale å omdirigere dem til en fil (> filename.ext
) eller pipe dem gjennom et filter (| grep search-for-this
):
Kjernelogg
Følgende fungerer uten rot:
$ 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 spesifiser hvilket område du er interessert i – radio, hendelser …
# 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å enhetsinformasjon
Og massevis av det: Enhet detaljer, kontoinformasjon, 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-ett
Lag en stor ball med alt sammen, fra logcat til dumpstate:
$ bugreport > /mnt/sdcard/bugreport.txt
Jeg er ganske sikker på at du virkelig vil omdirigere den siste kommandoen … xD
Noe om tillatelser
PS: Naturligvis kan tilgang til denne informasjonen kreve rot, ettersom de fleste kildene ligger på intern lagring.
Kommentarer
- For å få mer innblikk i adb logcat-kommandoer, se her .
- Eller bare sjekk logging tag-wiki @testing – det har enda flere referanser 🙂
- Linken til " Feilsøking av Android Core Dumps " er død, kan vi få et alternativ?
- @Spidey der ' er alltid Archive.ORG for denne typen problemer (lenken går til en arbeidskopi t her).
- For alle andre som meg som er nye for Android, må du først kjøre
$ adb shell
for å kunne koble til enheten for å kunne kjøre ovennevnte kommandoer. via en terminal. (Sørg selvfølgelig for at enheten din er koblet til datamaskinen din og at USB-feilsøking er slått på.)
Svar
A fant at CatLog viser Android-loggen litt bedre enn aLogcat. I tillegg til adb logcat
, er det det jeg bruker.
Kommentarer
- Se kommentaren min ovenfor, angående LogCat-apper.
- Jeg har oppdatert spørsmålet. Vær oppmerksom på at relativ posisjonsinformasjon (f.eks. " over " ) kan lett bli utdaterte, siden rekkefølgen på svarene kan endres med tiden.
Svar
A metode uten root, som fungerer selv med nye Android-versjoner:
Forutsetninger:
- Linux, Windows eller Mac
- USB-kabel for enheten din
- Android-enhet
Instruksjoner:
- Installer enhetsdriveren for bruk av adb. Alt du trenger finner du her
- Last ned adb-kjørbar for operativsystemet ditt. Det er en del av Android SDK, men du kan kanskje finne adb-kjøringen individuelt.
- Koble Android-enheten din.
- Aktiver utvikleralternativene .
- Aktiver USB-feilsøking.
- Åpne en kommandopromt (windows) eller terminal (linux / mac). Slik gjør du det: På Windows: windows + r> skriv inn «cmd» (uten anførselstegn)> klikk enter | På Linux: Du vet ikke hvordan du åpner en terminal? LOL | På Mac: Skriv
Terminal
i Spotlight og åpne den - CD til katalogen der Adb kjørbar er lokalisert. På Windows: Gå til katalogen der du lastet ned adb kjørbar, Shift + høyreklikk og velg «Åpne konsoll» (eller lignende) | På Linux / Mac: Høyreklikk i katalogen og velg «Åpne terminal her» (eller bare CD i katalogen)
- Skriv inn cmd / terminalen din:
adb devices
for å bekrefte at enheten er riktig tilkoblet. - Hvis enheten din er riktig valgt, skriv inn
adb logcat
for å vise den mektige og magiske logcat aka stacktrace. - Gjengi feilen din (eller hva som helst) på enheten din.
- Rett etter limer du inn hele cmd / terminalvinduet i en lim-tjeneste som http://pastebin.com/ og send den til oss.
(Mest kopiert fra Leandros )
An sv
Den ligger i /sdcard/bugreports
.
Kommentarer
- Jeg ' Jeg har aldri hatt en slik mappe på telefonen min … er dette spesifikt for en produsent eller enhet?
- Fra Logcat – CyanogenMod Wiki : Du kan bruke en magisk tastekombinasjon for å lage en feilrapportfil i / sdcard / bugreports. Så dette ser ut til å være en ) litt spesifikk (sannsynligvis til CM), og b) ikke svaret på spørsmålet, ettersom OP ser etter " generert automatisk " de.