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
- Komentáře nejsou určeny pro rozšířenou diskusi; tato konverzace byla přesunuta do chatu .
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ěkoliktombstone_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:
- Nainstalujte ovladač zařízení pro použití adb. Vše, co potřebujete, najdete zde
- 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ě.
- Připojte zařízení Android.
- Povolte možnosti pro vývojáře .
- Povolit ladění USB.
- 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 - 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)
- Zadejte svůj cmd / terminál:
adb devices
a ověřte, zda je vaše zařízení správně připojeno. - Pokud vaše zařízení je správně vybráno, zadejte
adb logcat
a zobrazte mocný a kouzelný logcat aka stacktrace. - Přehrajte svou chybu (nebo cokoli jiného) na svém zařízení.
- 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.