Det finns många intressanta saker i Android-systemloggen, som är till hjälp på många sätt

  • hitta grundorsaker av problem
  • identifiera appar som inte fungerar bra

Hur kan jag visa och granska Android-loggen?

Kommentarer

Svar

Android 4.1 och senare

Det föredragna sättet är att ladda ner SDK och använda adb logcat (kräver att aktivera " utvecklaralternativ " på enheten).

Det finns appar tillgängliga för visa hela systemloggen, men de fungerar bara på rotade enheter eller kräver att manuellt kommando skickas via adb för att få dem att fungera. För mer information se se den här frågan.

Android 4.0 och äldre

Du kan antingen ladda ner SDK och använd adb logcat eller hämta Logcat Extrem från Google Play Store, som visar loggen direkt på din telefon.

Kommentarer

  • Alternativt kan du använda Terminal Emulator med kommandot " logcat > /sdcard/log.txt" för kontinuerlig skrivning av loggen till en fil på SD Kort. Detta kan hjälpa till att räkna ut problem med slumpmässiga omstart.
  • Bra poäng. Vissa telefoner tenderar att skräppost logga full av trivial information, så om du vill minimera filstorlek och data att gå igenom, kolla in avsnittet " Filtreringsloggutdata " på developer.android.com/guide/developing/tools/adb.html#logcat
  • LogCat Apps fungerar inte ' t arbeta något med JellyBean. Google ändrade Android API, appar har ' har inte längre behörighet att läsa loggar från andra appar än sina egna.
  • Jag har skapat ett enkelt verktyg för att samla in loggar från en dator: gist.github.com/hrj/5983971
  • Logcat Extreme är den fina appen för att se logg

Svar

Loggfilplatser

Det finns flera kataloger där loggar (inklusive de från kraschar) kanske visas – inte alla är standardiserade (dvs vissa kan vara ROM-specifika).

  • /data/anr: Vissa spårfiler verkar komma hit (Dalvik skriver stackspår här på ANR, dvs ”Application svarar inte” aka ”Force-Close”; se t.ex. loggutdrag här )
  • /data/dontpanic verkar vara en standardplats (AOSP) och innehåller några kraschloggar inklusive spår (se t.ex. viaForensics och St. ackOverflow )
  • /data/kernelpanics är en annan plats – jag har inte haft någon ”kärnpanik” på min Android-enhet, jag såg inget innehåll där än.
  • /data/panic/panic_daemon.config kan peka på andra konfigurerade platser – på min Droid 2 nämner den /sdcard/panic_data/
  • nämnda Droid 2 har också en /data/panicreports -katalog (tom här)
  • /data/tombstones kan innehålla flera tombstone_nn filer (med nn som en serie, ökat med varje ny fil). När gravstenar placeras för de döda görs det här för ”processer dödade av misstag” (dvs. kraschade) – och det är det som kallas ”core dumps” på Linux / Unix-system. Men inte alla appar skapar gravstenar; detta måste uttryckligen aktiveras av utvecklaren (se Felsökning av Android Core Dumps ).

Det kan finnas några fler platser som flydde mig; men eftersom de flesta loggningar sker på tmpfs förloras dessa data med en omstart och de skulle inte matcha OPs-frågan.

Loggkommandon som ska användas med en terminal app (eller adb)

Flera kommandon kan ge dig massor av information. För de flesta av dem är det att rekommendera att omdirigera dem till en fil (> filename.ext) eller leda dem genom ett filter (| grep search-for-this ):

Kärnlogg

Följande fungerar utan root:

$ 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

Här kan du t.ex. ange vilket område du är intresserad av – radio, händelser …

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

Och massor av det: Enhet detaljer, kontoinformation, tjänster …

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

Allt-i-ett

Gör en stor boll med allt tillsammans, från logcat till dumpstat:

$ bugreport > /mnt/sdcard/bugreport.txt 

Jag är ganska säker på att du verkligen vill omdirigera det sista kommandot … xD

Något om behörigheter

PS: Naturligtvis kan åtkomst till denna information kräva root, eftersom de flesta källorna finns på internt minne.

Kommentarer

  • För att få mer inblick i adb logcat-kommandon, se här .
  • Eller kolla bara vår loggtagg-wiki @testing – det har ännu fler referenser 🙂
  • Länken för " Felsökning av Android Core Dumps " är död, kan vi få ett alternativ?
  • @Spidey där ' är alltid Archive.ORG för denna typ av problem (länk går till en arbetskopia t här).
  • För alla andra som jag som är nya för Android, för att kunna köra ovanstående kommandon måste du först köra $ adb shell för att ansluta till enheten via en terminal. (Se naturligtvis till att din enhet är ansluten till din dator och att USB-felsökning har aktiverats.)

Svar

A fann att CatLog visar Android-loggen lite bättre än aLogcat. Förutom adb logcat är det vad jag använder.

Kommentarer

  • Se min kommentar ovan, angående LogCat-appar.
  • Jag har uppdaterat frågan. Observera att relativ positionsinformation (t.ex. " ovan " ) kan lätt bli föråldrade, eftersom ordningen på svaren kan förändras med tiden.

Svar

A metod utan root, som fungerar även med nya Android-versioner:

Förutsättningar:

  • Linux, Windows eller Mac
  • USB-kabel för din enhet
  • Android-enhet

Instruktioner:

  1. Installera din enhetsdrivrutin för att använda adb. Allt du behöver hittar du här
  2. Ladda ned adb-körbar för ditt operativsystem. Det är en del av Android SDK, men du kan kanske hitta adb-körningen individuellt.
  3. Anslut din Android-enhet.
  4. Aktivera utvecklaralternativen .
  5. Aktivera USB-felsökning.
  6. Öppna ett kommandoprogram (windows) eller terminal (linux / mac). Så här gör du: I Windows: windows + r> skriv ”cmd” (utan citat)> klicka på Enter | På Linux: Du vet inte hur man öppnar en terminal? LOL | På Mac: Skriv Terminal i Spotlight och öppna den
  7. CD till katalogen där adb körbar finns. På Windows: Gå till katalogen där du laddade ner adb körbar, Skift + Högerklicka och välj ”Öppna konsol” (eller liknande) | På Linux / Mac: Högerklicka i katalogen och välj ”Öppna terminal här” (eller helt enkelt CD i katalogen)
  8. Skriv in din cmd / terminal: adb devices för att verifiera att din enhet är korrekt ansluten.
  9. Om din enhet är korrekt vald, skriv in adb logcat för att visa den mäktiga och magiska logcat aka stacktrace.
  10. Reproducera ditt fel (eller vad som helst) på din enhet.
  11. Klistra in hela cmd / terminalfönstret direkt i en klistra-tjänst som http://pastebin.com/ och skicka den till oss.

(Kopieras oftast från Leandros )

An svara

Den finns i /sdcard/bugreports.

Kommentarer

  • Jag ' Jag har aldrig haft en sådan mapp på min telefon … är detta specifikt för en tillverkare eller enhet?
  • Från Logcat – CyanogenMod Wiki : Du kan använda en magisk tangentkombination för att skapa en bugrapporteringsfil i / sdcard / bugreports. Så detta verkar vara en ) lite specifikt (troligen för CM) och b) inte svaret på frågan, eftersom OP letar efter " genereras automatiskt " de.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *