Skocz do zawartości

Jak zrobić logcat?


glaedrem

Rekomendowane odpowiedzi

Czym jest logcat i czemu służy?
Logcat w Androidzie to aktywny podgląd wszystkiego co dzieje się "pod maską" telefonu. Wyświetlane są wszelkie działania i operacje na aplikacjach, a także czynności wykonywane przez system. Analiza tych danych jest często niezbędna do zdiagnozowania problemu np. niespodziewanego zamknięcia aplikacji - zwanym dalej FC (Force Close).

trans.gif
Logcat wygląda mniej więcej tak:
ekran_006.png

Jeśli po instalacji MIUI na naszym telefonie występuje jakieś nieprawidłowe zachowanie aplikacji np. FC a problem ten nie może zostać przeze mnie odtworzony to konieczne jest przesłanie na adres mailowy (kontakt na dole strony) logcata z tego zdarzenia.
Przedstawiony tutaj sposób na rejestrację logcata jest jednym z kilku możliwych do przeprowadzenia. Opiszę tutaj metodę (dla mnie przynajmniej) najwygodniejszą i najszybszą.

Poradnik pisany jest na Ubuntu linux ale komendy i sama procedura jest taka sama dla Windows.

Wymagania

  • zainstalowane na komputerze Android SDK
  • telefon podpięty pod USB
  • włączone Debugowanie USB dostępne w MIUI 2.3 pod:
  • Ustawienia > Aplikacje > Opcje programistyczne a w MIUI v4 pod:
  • Ustawienia > Opcje programistyczne[bt]Instalacja Android SDK[/bt]

instalacja SDK dla Windows i Linux jest jasno opisana na wiki i wystarczy wykonać poradnik krok po kroku.
jeśli po wykonaniu powyższego poradnika polecenie:

adb devices

wprowadzone w konsoli zwraca nam identyfikator urządzenia to możemy przystąpić do dalszej części.[bt]Logcat[/bt]
Często na stronie miuipolska.pl lub na forum wspominam iż by pomóc w rozwiązaniu problemu potrzebne jest przesłanie mi logcata z FC, którego mamy po uruchomieniu jakiejś aplikacji.

W tym celu dokonamy zapisu błędu z FC Tethering i Hotspot w MIUI v4.

Log zostanie zapisany do pliku tekstowego log.txt.

  • Podpinamy telefon do USB
  • Przechodzimy do miejsca w telefonie gdzie chcemy wywołać FC ale jeszcze tego nie robimy. W tym przykładzie przechodzimy do Ustawienia > Więcej.... Lepiej jest to zrobić teraz, ponieważ logcat będzie rejestrował nawet nasze kroki po menu, a to nie jest nam potrzebne.
  • Uruchamiamy konsolę CMD Uruchom > cmd lub Terminal w Linux
  • Przechodzimy do katalogu android-sdk/tools

Wpisujemy:

adb logcat > log.txt
  • (logcat będzie od razu zapisywany do pliku tekstowego więc nie będzie widoczny rezultat jego działania w konsoli.)
  • Czekamy chwilkę na przejście programu przez logi wstępne.
  • Na telefonie wywołujemy FC. W przykładzie klikamy na Tethering i Hotspot
  • Pojawia nam się komunikat o zamknięciu aplikacji Ustawienia. NIE klikamy jeszcze OK.

ekran_005.png

  • W konsoli kończymy działanie Logcata wciskając kombinację klawiszy:
  • ctrl + c. Dopóki nie klikniemy na OK w telefonie fragment logcata z tego FC będzie na końcu pliku log.txt więc łatwo dokonamy wycięcia tylko tej części, która nas interesuje.
  • Otwieramy plik log.txt za pomocą edytora plików tekstowych. Tylko nie Notatnik!
  • Ta zabawka potrafi zapisać loga bez zawijania wierszy, a także nie radzi sobie z dużymi plikami. Radzę użyć normalnego edytora np. Notepad++

Przewijamy na koniec pliku log.txt:

ekran_007.pngBłąd (ERROR) powodujący zakończenie działania aplikacji zaczyna się od:

E/AndroidRuntime( 6632): FATAL EXCEPTION: main

a kończy się na wpisach:

W/ActivityManager( 176): Force finishing activity com.android.settings/.SubSettings

Taki też fragment kopiujemy i wysyłamy mailem do mnie. Warto jest też zapisać to w osobnym pliku .txt by łatwiej się czytało loga :wink:

Czego możemy się dowiedzieć z logcata?
Wykonując logcat możemy stwierdzić co powoduje błąd aplikacji. W opisanym przykładzie jest to brak zasobów:

E/AndroidRuntime( 6632): Caused by:

android.content.res.Resources$NotFoundException: Resource ID #0x3060005

będących pod podanym ID. Prawdopodobnie string jest zdefiniowany w public.xml ale nieużyty w strings.xml.

Rejestr bootloopa
Logcat jest także bardzo przydatny jeśli pomimo wgrania pliku w recovery, telefon się nie uruchamia i stoi na animacji bootowania lub ekranie startowym. Wtedy także możemy ten błąd zarejestrować.

Kolejność jest wtedy następująca:

  • Wchodzimy do recovery
  • Instalujemy coś co powoduje bootloop
  • Restartujemy telefon
  • Włączamy logcat (najlepiej bez opcji zapisu do pliku)
  • Obserwujemy logcat aż wpisy zaczną się powtarzać - to jest bootloop
  • Zatrzymujemy logcat, zaznaczamy treść błędu w konsoli i kopiujemy do pliku tekstowego.

Jako ciekawostkę podam, że by wyjść z bootloopa nie trzeba wyjmować baterii.

W większości przypadków wpisanie poniższej komendy:

adb reboot recovery

wymusi na telefonie powrót do recovery

Inne możliwości
W markecie dostępnych jest także wiele aplikacji, które część działań wykonują za nas a logcat jest robiony bezpośrednio przez aplikację w telefonie. Niektóre mają także możliwość wysłania błędu emailem pod podany adres. Można więc się zapoznać z ich działaniem jeśli ten sposób jest zbyt skomplikowany.

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • mrosi zablokował(a) ten temat
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
×
×
  • Dodaj nową pozycję...