Er staan veel interessante dingen in het Android-systeemlogboek, die op veel manieren nuttig zijn
- de hoofdoorzaken vinden problemen
- identificeren van apps die zich misdragen
Hoe kan ik het Android-logboek bekijken en onderzoeken?
Reacties
- Reacties zijn niet bedoeld voor uitgebreide discussie; deze conversatie is verplaatst naar chat .
Antwoord
Android 4.1 en nieuwer
De beste manier is om de SDK te downloaden en adb logcat
(vereist om " ontwikkelaaropties " op apparaat te activeren).
Er zijn apps beschikbaar voor het volledige systeemlogboek bekijken, maar ze werken alleen op geroote apparaten of vereisen een handmatige opdracht via adb
om ze te laten werken. Voor meer informatie, bekijk zie deze vraag.
Android 4.0 en ouder
U kunt ofwel de SDK en gebruik adb logcat
of haal Logcat Extrem van de Google Play Store, die het logboek rechtstreeks op uw telefoon toont.
Reacties
- U kunt ook Terminal Emulator gebruiken met het commando " logcat > /sdcard/log.txt" voor het continu schrijven van het logboek naar een bestand op de SD Kaart. Dit kan helpen bij het oplossen van problemen met willekeurig opnieuw opstarten.
- Goed punt. Sommige telefoons hebben de neiging om het logboek vol met triviale informatie te spammen, dus als u de bestandsgrootte en de gegevens die u wilt doorlopen wilt minimaliseren, bekijk dan de sectie " Logboekuitvoer filteren " op developer.android.com/guide/developing/tools/adb.html#logcat
- LogCat Apps doet dat niet ' werk niet met JellyBean. Google heeft de Android API gewijzigd, apps don ' hebben geen toestemming meer om logboeken van andere apps te lezen dan die van henzelf.
- Ik heb een eenvoudig hulpprogramma gemaakt om te verzamelen logs van een pc: gist.github.com/hrj/5983971
- Logcat Extreme is de leuke app voor zie log
Antwoord
Log-File locaties
Er zijn verschillende directories waar logs (inclusief die van crashes) kan verschijnen – ze zijn niet allemaal gestandaardiseerd (sommige zijn mogelijk ROM-specifiek).
-
/data/anr
: Sommige trace-bestanden lijken hier te komen (Dalvik schrijft hier stacktraces op ANR, dwz “Applicatie reageert niet” oftewel “Force-Close”; zie bv. Logfragmenten hier ) -
/data/dontpanic
lijkt een standaardlocatie (AOSP) te zijn, en bevat enkele crashlogboeken inclusief sporen (zie bijv. viaForensics en St ackOverflow ) -
/data/kernelpanics
is een andere locatie – omdat ik geen “kernel panic” had op mijn Android-apparaten, zag ik daar nog geen inhoud. - de
/data/panic/panic_daemon.config
kan verwijzen naar andere geconfigureerde locaties – op mijn Droid 2 vermeldt het/sdcard/panic_data/
- genoemde Droid 2 heeft ook een
/data/panicreports
directory (hier leeg) -
/data/tombstones
kan meerderetombstone_nn
bestanden (waarbijnn
een serie is, verhoogd met elk nieuw bestand). Omdat grafstenen voor de doden worden geplaatst, wordt dit hier gedaan voor “processen die per ongeluk zijn gestorven” (d.w.z. gecrasht) – en het is wat wordt aangeduid als “kernstortplaatsen” op Linux / Unix-systemen. Niet alle apps maken echter grafstenen; dit moet expliciet worden ingeschakeld door de ontwikkelaar (zie Debuggen van Android Core Dumps ).
Er kunnen nog meer locaties zijn die ontsnapte mij; maar aangezien de meeste logboekregistratie wordt gedaan op tmpfs
, gaan deze gegevens verloren bij een herstart en komen ze niet overeen met de OPs-vraag.
Log-opdrachten om te gebruiken met een terminal app (of adb)
Verschillende commandos kunnen je heel veel informatie bezorgen. Voor de meeste van hen is het aan te bevelen om ze om te leiden naar een bestand (> filename.ext
) of ze door een filter te leiden (| grep search-for-this
):
Kernellog
Het volgende werkt zonder 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
Hier kunt u bijv specificeer in welk gebied je geïnteresseerd bent – radio, evenementen …
# 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>
Apparaatinfo ophalen
En tonnen ervan: apparaat bijzonderheden, accountinformatie, diensten …
$ 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
Maak een grote bal met alles bij elkaar, van logcat tot dumpstate:
$ bugreport > /mnt/sdcard/bugreport.txt
Ik “ben er vrij zeker van dat je dat laatste commando echt wilt omleiden … xD
Iets over permissies
PS: Natuurlijk kan voor toegang tot die informatie root vereist zijn, aangezien de meeste bronnen zich in de interne opslag bevinden.
Opmerkingen
- Om meer inzicht te krijgen in adb logcat-opdrachten, zie hier .
- Of bekijk gewoon onze logging-tag-wiki @testing – die nog meer referenties bevat 🙂
- De link voor " Foutopsporing voor Android Core Dumps " is dood, kunnen we een alternatief vinden?
- @Spidey daar ' s altijd Archive.ORG voor dit soort problemen (link gaat naar een werkkopie t hier).
- Voor iedereen zoals ik die nieuw is bij Android: om de bovenstaande opdrachten uit te voeren, moet je eerst
$ adb shell
uitvoeren om verbinding te maken met het apparaat via een terminal. (Zorg er natuurlijk voor dat uw apparaat is aangesloten op uw computer en dat USB-foutopsporing is ingeschakeld.)
Antwoord
A ontdekte dat CatLog het Android-logboek iets beter weergeeft dan aLogcat. Naast adb logcat
, is dat wat ik gebruik.
Opmerkingen
- Zie mijn opmerking hierboven, met betrekking tot LogCat-apps.
- Ik heb de vraag bijgewerkt. Houd er rekening mee dat relatieve positiegegevens (bijv. " boven " ) kan gemakkelijk verouderd raken, aangezien de volgorde van de antwoorden met de tijd kan veranderen.
Antwoord
A methode zonder root, die zelfs werkt met nieuwe Android-versies:
Vereisten:
- Linux, Windows of Mac
- USB-kabel voor uw apparaat
- Android-apparaat
Instructies:
- Installeer je apparaatstuurprogramma voor het gebruik van adb. Alles wat je nodig hebt, vind je hier
- Download het uitvoerbare adb-bestand voor uw besturingssysteem. Het maakt deel uit van de Android SDK, maar u kunt het uitvoerbare adb-bestand mogelijk afzonderlijk vinden.
- Verbind je Android-apparaat.
- Schakel de ontwikkelaaropties in .
- Schakel USB-foutopsporing in.
- Open een opdrachtpromt (windows) of terminal (linux / mac). Hoe het te doen: In Windows: windows + r> typ “cmd” (zonder aanhalingstekens)> klik op enter | Op Linux: je weet niet hoe je een terminal moet openen? LOL | Op Mac: typ
Terminal
in Spotlight en open het - CD naar de map waar de adb executable bevindt zich. Op Windows: ga naar de directory waar je het adb executable hebt gedownload, Shift + Right Click en selecteer “Open Console” (of vergelijkbaar) | Op Linux / Mac: Klik met de rechtermuisknop in de directory en selecteer “Open Terminal here” (of gewoon een cd in de directory)
- Typ uw cmd / terminal:
adb devices
om te controleren of uw apparaat correct is aangesloten. - Als je apparaat correct is geselecteerd, typ
adb logcat
om de machtige en magische logcat aka stacktrace te tonen. - Reproduceer je fout (of wat dan ook) op je apparaat.
- Plak daarna het hele cmd / terminal-venster in een plakservice zoals http://pastebin.com/ en stuur het naar ons.
(Meestal gekopieerd van Leandros )
An swer
Het bevindt zich in /sdcard/bugreports
.
Reacties
- Ik ' heb nog nooit zon map op mijn telefoon gehad … is dit specifiek voor een fabrikant of apparaat?
- Van Logcat – CyanogenMod Wiki : Je kunt een magische toetsencombinatie gebruiken om een bugrapportbestand te maken in / sdcard / bugreports. Dus dit lijkt een ) een beetje specifiek (waarschijnlijk naar CM), en b) niet het antwoord op de vraag, aangezien het OP zoekt naar " automatisch gegenereerd " ones.