V protokolu systému Android je spousta zajímavých věcí, které jsou v mnoha ohledech užitečné

  • najít hlavní příčiny problémů
  • identifikovat špatně fungující aplikace

Jak mohu zobrazit a zkontrolovat protokol Android?

Komentáře

Odpovědět

Android 4.1 a novější

Upřednostňovaným způsobem je stáhnout SDK a použít adb logcat (vyžaduje aktivaci " možností pro vývojáře " na zařízení).

K dispozici jsou aplikace pro prohlížení celého systémového protokolu, fungují však pouze na odemčených zařízeních nebo vyžadují vydání manuálního příkazu pomocí adb, aby fungovaly. Další informace naleznete v této otázce.

Android 4.0 a starší

Můžete si buď stáhnout SDK a použijte adb logcat nebo získejte Logcat Extrem z Obchod Google Play, který zobrazuje protokol přímo ve vašem telefonu.

Komentáře

  • Alternativně můžete použít emulátor terminálu s příkazem " logcat > /sdcard/log.txt" pro nepřetržité zapisování protokolu do souboru na SD Kartu. To může pomoci zjistit problémy s náhodným restartováním.
  • Dobrá poznámka. Některé telefony mají tendenci spamovat protokol plný triviálních informací, takže pokud si přejete minimalizovat velikost souborů a procházet data, podívejte se do sekce " Filtrování výstupu protokolu " na developer.android.com/guide/developing/tools/adb.html#logcat
  • LogCat Apps není ' s JellyBean nepracují vůbec. Google změnil Android API, aplikace ' již nemají oprávnění ke čtení protokolů z jiných než vlastních aplikací.
  • Vytvořil jsem jednoduchý nástroj pro shromažďování protokoly z počítače: gist.github.com/hrj/5983971
  • Logcat Extreme je pěkná aplikace pro zobrazení protokolu

Odpověď

Umístění souborů protokolu

Existuje několik adresářů, kde jsou protokoly (včetně těch ze selhání) se mohou objevit – ne všechny jsou standardizované (tj. některé mohou být specifické pro ROM).

  • /data/anr: Zdá se, že se sem dostanou některé trasovací soubory (Dalvik zde zapisuje stopy zásobníku na ANR, tj. „Aplikace neodpovídá“ aka „Force-Close“; viz např. Výpisy protokolu zde )
  • /data/dontpanic se jeví jako standardní umístění (AOSP) a obsahuje některé protokoly o selhání včetně stop (viz např. viaForensics a sv ackOverflow )
  • /data/kernelpanics je jiné umístění – na mých zařízeních s Androidem jsem neměl žádnou „paniku jádra“, zatím jsem tam neviděl žádný obsah.
  • the /data/panic/panic_daemon.config může ukazovat na jiná nakonfigurovaná umístění – na mém Droidu 2 uvádí /sdcard/panic_data/
  • zmíněný Droid 2 má také /data/panicreports adresář (zde prázdný)
  • /data/tombstones může obsahovat několik tombstone_nn soubory (přičemž nn je sériové číslo, které se zvyšuje s každým novým souborem). Vzhledem k tomu, že náhrobky jsou umisťovány za mrtvé, provádí se to u „procesů zabitých náhodou“ (tj. Havarovaných) – a to je to, co se v systémech Linux / Unix označuje jako „skládky jádra“. Ne všechny aplikace však vytvářejí náhrobky; toto musí být vývojářem výslovně povoleno (viz Debugging Android Core Dumps ).

Může existovat několik dalších míst, která unikl mi; ale protože se většina protokolování provádí na tmpfs, tato data se při restartu ztratí a neodpovídají otázce OP.

Protokoly, které se mají použít s terminálem aplikace (nebo adb)

Několik příkazů vám může poskytnout spoustu informací. U většiny z nich je doporučeno přesměrovat je do souboru (> filename.ext) nebo je propojit filtrem (| grep search-for-this ):

Protokol jádra

Následující funguje bez 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

Zde můžete např upřesněte, o jakou oblast máte zájem – rádio, události …

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

Získání informací o zařízení

A spousta: Zařízení specifika, informace o účtu, služby …

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

All-in-One

Vytvořte velký míč se vším dohromady, od logcat po dumpstate:

$ bugreport > /mnt/sdcard/bugreport.txt 

Jsem si docela jistý, že ten poslední příkaz opravdu chcete přesměrovat … xD

Něco o oprávněních

PS: Přístup k těmto informacím může přirozeně vyžadovat root, protože většina zdrojů je umístěna na interním úložišti.

Komentáře

  • Další informace o příkazech adb logcat naleznete zde .
  • Nebo jen zkontrolujte naše protokolování tag-wiki @testing – které má ještě více odkazů 🙂
  • Odkaz na " Ladění Android Core Dumps " je mrtvé, můžeme získat alternativu?
  • @Spidey there ' vždy Archive.ORG pro tento druh problému (odkaz přejde na funkční kopii zde).
  • Pro kohokoli jiného, jako jsem já, kterému je v systému Android nový, musíte pro spuštění výše uvedených příkazů nejprve spustit $ adb shell pro připojení k zařízení přes terminál. (Samozřejmě se ujistěte, že je vaše zařízení připojeno k počítači a že je zapnuto ladění USB.)

Odpovědět

Bylo zjištěno, že CatLog zobrazuje protokol Android o něco lépe než aLogcat. Kromě adb logcat je to to, co používám.

Komentáře

  • Viz můj komentář výše, týkající se aplikací LogCat.
  • Aktualizoval jsem otázku. Vezměte prosím na vědomí, že informace o relativní poloze (např. " výše " ) může snadno zastarat, protože pořadí odpovědí se může časem měnit.

Odpověď

A metoda bez root, která funguje i s novými verzemi Android:

Předpoklady:

  • Linux, Windows nebo Mac
  • USB kabel pro vaše zařízení
  • Zařízení Android

Pokyny:

  1. Nainstalujte ovladač zařízení pro použití adb. Vše, co potřebujete, najdete zde
  2. Stáhněte si spustitelný soubor adb pro svůj operační systém. Je součástí sady Android SDK, ale spustitelný soubor adb můžete najít jednotlivě.
  3. Připojte zařízení Android.
  4. Povolte možnosti pro vývojáře .
  5. Povolit ladění USB.
  6. Otevřete příkazový řádek (Windows) nebo terminál (linux / mac). Jak na to: Ve Windows: Windows + r> zadejte „cmd“ (bez uvozovek)> klikněte na Enter | V systému Linux: Nevíte, jak otevřít terminál? LOL | V systému Mac: Napište Terminal do Spotlightu a otevřete jej
  7. CD do adresáře, kde Je umístěn spustitelný soubor adb. V systému Windows: Přejděte do adresáře, do kterého jste stáhli spustitelný soubor adb, Shift + pravé tlačítko myši a vyberte možnost „Otevřít konzolu“ (nebo podobně) | V systému Linux / Mac: Klikněte pravým tlačítkem do adresáře a vyberte „Otevřít terminál zde“ (nebo jednoduše CD do adresáře)
  8. Zadejte svůj cmd / terminál: adb devices a ověřte, zda je vaše zařízení správně připojeno.
  9. Pokud vaše zařízení je správně vybráno, zadejte adb logcat a zobrazte mocný a kouzelný logcat aka stacktrace.
  10. Přehrajte svou chybu (nebo cokoli jiného) na svém zařízení.
  11. Hned poté vložte celé okno cmd / terminálu do služby past jako http://pastebin.com/ a pošlete nám ho.

(Většinou zkopírováno z Leandros )

An swer

Je umístěn v /sdcard/bugreports.

Komentáře

  • Já ' jsem v telefonu nikdy takovou složku neměl … je to specifické pro výrobce nebo zařízení?
  • Od Logcat – CyanogenMod Wiki : Pomocí kombinace magických klíčů můžete vytvořit soubor hlášení chyb v / sdcard / bugreports. Takže se zdá, že ) trochu konkrétní (pravděpodobně pro CM) a b) ne odpověď na otázku, protože OP hledá " automaticky generované " jedni.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *