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
- Kommentarer er ikke til udvidet diskussion; denne samtale er flyttet til chat .
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 fleretombstone_nn
filer (hvornn
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:
- Installer din enhedsdriver til brug af adb. Alt hvad du behøver finder du her
- Download adb eksekverbar til dit operativsystem. Det er en del af Android SDK, men du kan muligvis finde adb eksekverbar individuelt.
- Tilslut din Android-enhed.
- Aktivér udviklerindstillingerne .
- Aktivér USB-fejlretning.
- Å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 - 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)
- Indtast din cmd / terminal:
adb devices
for at kontrollere, at din enhed er korrekt tilsluttet. - Hvis din enhed er korrekt valgt, skriv
adb logcat
for at vise den mægtige og magiske logcat aka stacktrace. - Gengiv din fejl (eller hvad som helst) på din enhed.
- 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.