Jak mogę wyświetlić i sprawdzić dziennik systemu Android?


109

W dzienniku systemu Android jest wiele interesujących rzeczy, które są pomocne na wiele sposobów

  • znajdź przyczyny problemów
  • identyfikować źle działające aplikacje

Jak mogę wyświetlić i sprawdzić dziennik systemu Android?


Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została przeniesiona do czatu .
Mateusz

Odpowiedzi:


59

Android 4.1 i nowsze

Preferowanym sposobem jest pobranie zestawu SDK i użycie adb logcat(wymaga aktywacji „opcji programisty” na urządzeniu).

Dostępne są aplikacje do przeglądania pełnego dziennika systemu, jednak działają one tylko na zrootowanych urządzeniach lub wymagają wydania polecenia ręcznego przez, adbaby działały. Aby uzyskać więcej informacji zobacz to pytanie.

Android 4.0 i starszy

Możesz pobrać zestaw SDK i użyć adb logcatlub pobrać Logcat Extrem ze sklepu Google Play, który pokazuje dziennik bezpośrednio na telefonie.


2
Alternatywnie można użyć emulatora terminali z poleceniem „logcat> /sdcard/log.txt” do ciągłego zapisywania dziennika do pliku na karcie SD. Pomoże to rozwiązać problemy z losowymi restartami.
Chahk,

Słuszna uwaga. Niektóre telefony mają tendencję do spamowania dziennika pełnego trywialnych informacji, więc jeśli chcesz zminimalizować rozmiar pliku i dane, które chcesz przejść, sprawdź sekcję „Filtrowanie wyników dziennika” na developer.android.com/guide/developing/tools/adb.html #logcat
onik

LogCat Apps nie działa już z JellyBean. Google zmieniło interfejs API Androida, aplikacje nie mają już uprawnień do odczytu dzienników z innych aplikacji niż ich własne.
Leandros,

Stworzyłem proste narzędzie do zbierania dzienników z komputera: gist.github.com/hrj/5983971
HRJ

Logcat Extreme to przyjemna aplikacja do przeglądania dziennika
Arpit Patel,

57

Lokalizacje plików dziennika

Istnieje kilka katalogów, w których mogą pojawiać się dzienniki (w tym te z awarii) - nie wszystkie z nich są znormalizowane (tzn. Niektóre mogą być specyficzne dla pamięci ROM).

  • /data/anr: Wydaje się, że niektóre pliki śledzenia się tutaj dostają (Dalvik zapisuje tutaj ślady stosu na ANR, tj. „Aplikacja nie odpowiada”, inaczej „Force-Close”; patrz np. Fragmenty dziennika tutaj )
  • /data/dontpanicwydaje się być standardową lokalizacją (AOSP) i zawiera niektóre dzienniki awarii, w tym ślady (patrz np. viaForensics i StackOverflow )
  • /data/kernelpanics jest inną lokalizacją - nie mając „paniki jądra” na moich urządzeniach z Androidem, nie widziałem tam jeszcze żadnych treści.
  • /data/panic/panic_daemon.configpunkt może skonfigurowanych do innych miejscach - na moim Droid 2 wymienia/sdcard/panic_data/
  • wspomniany Droid 2 ma również /data/panicreportskatalog (tutaj pusty)
  • /data/tombstonesmoże pomieścić kilka tombstone_nnplików (przy nnczym jest to numer seryjny, powiększany o każdy nowy plik). Ponieważ nagrobki są umieszczane dla umarłych, robi się to tutaj dla „procesów umarłych przez przypadek” (tj. Zawieszonych) - i jest to tak zwane „zrzuty rdzenia” w systemach Linux / Unix. Jednak nie wszystkie aplikacje tworzą nagrobki; musi to zostać wyraźnie włączone przez programistę (patrz Debugowanie zrzutów podstawowych Androida ).

Możliwe, że uciekło mi jeszcze kilka miejsc; ale ponieważ większość logowania jest wykonywana tmpfs, dane te są tracone przy ponownym uruchomieniu i nie pasują do pytania PO.

Rejestruj polecenia do użycia z aplikacją terminalową (lub adb)

Kilka poleceń może dostarczyć mnóstwo informacji. W przypadku większości z nich zaleca się przekierowanie ich do pliku ( > filename.ext) lub przepuszczenie ich przez filtr ( | grep search-for-this):

Dziennik jądra

Następujące działa bez rootowania:

$ 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

Tutaj możesz np. Określić, jaki obszar Cię interesuje - radio, wydarzenia ...

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

Uzyskiwanie informacji o urządzeniu

I mnóstwo: specyfika urządzenia, informacje o koncie, usługi ...

$ dumpsys
Currently running services:
  LocationProxyService
  SurfaceFlinger
  accessibility
  account
  activity
<snip>
DUMP OF SERVICE account:
Accounts:
  1 Account {name=xxxxxxx@googlemail.com, 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>

Wszystko w jednym

Zrób wielką piłkę ze wszystkim razem, od logcata do zrzutu:

$ bugreport > /mnt/sdcard/bugreport.txt

Jestem pewien, że naprawdę chcesz przekierować to ostatnie polecenie ... xD

Coś na temat uprawnień

PS: Oczywiście dostęp do tych informacji może wymagać rootowania, ponieważ większość źródeł znajduje się w pamięci wewnętrznej.


Aby uzyskać więcej informacji na temat poleceń adb logcat, zobacz tutaj .
testowanie

Lub po prostu sprawdź nasz tag logowania-wiki @testing - który ma jeszcze więcej referencji :)
Izzy

Link do „Debugowania podstawowych zrzutów Androida” jest martwy, czy możemy znaleźć alternatywę?
Spidey

1
@Spidey zawsze istnieje Archive.ORG dla tego rodzaju problemu (link prowadzi tam do kopii roboczej).
Izzy

12

Stwierdzono, że CatLog wyświetla dziennik Androida nieco lepiej niż aLogcat. Poza adb logcattym tego używam.


Zobacz mój komentarz powyżej dotyczący aplikacji LogCat.
Leandros,

2
Zaktualizowałem pytanie. Należy pamiętać, że względne informacje o pozycji (np. „Powyżej”) mogą łatwo stać się nieaktualne, ponieważ kolejność odpowiedzi może się zmieniać z czasem.
Flow

3

Metoda bez roota, która działa nawet z nowymi wersjami Androida:

Wymagania wstępne:

  • Linux, Windows lub Mac
  • Kabel USB do urządzenia
  • Urządzenie z Androidem

Instrukcje:

  1. Zainstaluj sterownik urządzenia, aby korzystać z adb. Znajdziesz tu wszystko, czego potrzebujesz
  2. Pobierz plik wykonywalny adb dla swojego systemu operacyjnego. Jest to część zestawu SDK systemu Android, ale możesz być w stanie znaleźć plik wykonywalny adb indywidualnie.
  3. Podłącz swoje urządzenie z Androidem.
  4. Włącz opcje programisty .
  5. Włączyć debugowanie USB.
  6. Otwórz komendę promt (Windows) lub terminal (Linux / Mac). Jak to zrobić: W systemie Windows: Windows + R> wpisz „cmd” (bez cudzysłowów)> kliknij Enter | W systemie Linux: nie wiesz, jak otworzyć terminal? LOL | Na Macu: wpisz TerminalSpotlight i otwórz go
  7. Płyta CD do katalogu, w którym znajduje się plik wykonywalny adb. W systemie Windows: przejdź do katalogu, w którym został pobrany plik wykonywalny adb, Shift + prawy przycisk myszy i wybierz „Otwórz konsolę” (lub podobny) | W systemie Linux / Mac: kliknij prawym przyciskiem myszy w katalogu i wybierz „Otwórz terminal tutaj” (lub po prostu CD do katalogu)
  8. Wpisz polecenie cmd / terminal: adb devicesaby sprawdzić, czy urządzenie jest prawidłowo podłączone.
  9. Jeśli twoje urządzenie jest odpowiednio wybrane, wpisz, adb logcataby pokazać potężnego i magicznego logcat aka stacktrace.
  10. Odtwórz swój błąd (lub cokolwiek innego) na swoim urządzeniu.
  11. Zaraz potem wklej całe okno cmd / terminal do usługi wklejania, takiej jak http://pastebin.com/ i wyślij go do nas.

(W większości skopiowane z Leandros )


2

Darmowa aplikacja SysInfo ( strona projektu ) wyświetli dzienniki systemowe, a także skompresuje pełny raport systemowy, który można wysłać pocztą e-mail, Dropbox, NFC itp. Nie wspominając o wielu innych interesujących informacjach systemowych.


(Tak, jestem prawie rok spóźniony, ale ten wymaga wzmianki).
JRobert,

Oba linki są teraz zepsute.
jk7

Drugi link (strona projektu) nadal działa dla mnie, ale ostatnie wpisy w nim pochodzą z 2010 roku. Zmiany w systemie Android od tego czasu zepsuły wiele funkcji Sysinfo.
JRobert,

-1

Znajduje się w /sdcard/bugreports.


3
Nigdy nie miałem takiego folderu w telefonie ... czy jest to specyficzne dla producenta lub urządzenia?
Mateusz

2
Z Logcat - CyanogenMod Wiki : Możesz użyć magicznej kombinacji klawiszy, aby utworzyć plik raportu o błędach w / sdcard / bugreports. Wydaje się to więc: a) nieco specyficzne (prawdopodobnie dla CM) ib) nie jest odpowiedzią na pytanie, ponieważ OP szuka „automatycznie wygenerowanych”.
Izzy
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.