Sprawdzanie logów logów czasu za pomocą TraceView

Usługa Traceview została wycofana. Jeśli używasz Android Studio w wersji 3.2 lub nowszej, skorzystaj z programu profilującego procesora, aby sprawdzić .trace pliki przechwycone przez instrukcję aplikacji za pomocą klasy Debug, rejestrować nowe ślady metod, zapisywać pliki .trace i sprawdzać wykorzystanie procesora przez procesy aplikacji w czasie rzeczywistym.

Traceview to narzędzie, które przedstawia graficzne reprezentacje logów śledzenia. Logi możesz generować, instrumentując kod za pomocą klasy Debug. Ta metoda śledzenia jest bardzo precyzyjna, ponieważ możesz dokładnie określić, w którym miejscu kodu chcesz zacząć, i zatrzymać rejestrowanie danych śledzenia. Jeśli te logi śledzenia nie zostały jeszcze wygenerowane i zapisane z połączonego urządzenia na komputerze lokalnym, zapoznaj się z sekcją Generuj logi śledzenia przez instrumentację aplikacji. Sprawdzanie tych logów w widoku śledzenia ułatwia debugowanie aplikacji i profilowanie jej wydajności.

Wskazówka: możesz użyć dmtracedump z poziomu wiersza poleceń, aby wygenerować graficzne diagramy stosu wywołań plików dziennika śledzenia.

Jeśli nie musisz wyświetlać logów śledzenia zarejestrowanych przez instrumentację aplikacji za pomocą klasy Debug, możesz użyć narzędzia do profilowania procesora dostępnego w Androidzie Studio w wersji 3.0 lub nowszej, aby sprawdzać wątki aplikacji i rejestrować ślady metody.

Otwieranie logu śledzenia za pomocą widoku śledzenia

Aby otworzyć dziennik śledzenia w widoku śledzenia z Android Studio, wykonaj te czynności:

  1. Uruchom Android Device Monitor.
  2. W Android Device Monitor wybierz File > Open File (Plik > Otwórz plik).
  3. Przejdź do pliku .trace, który chcesz sprawdzić.
  4. Kliknij Otwórz.

Uwaga: jeśli próbujesz wyświetlić logi śledzenia aplikacji utworzonej z włączonym zmniejszaniem kodu (np. kompilacją wersji), niektóre nazwy metod i użytkowników mogą być zaciemnione. Możesz użyć pliku ProGuard mapping.txt, aby sprawdzić oryginalne, niezaciemnione nazwy. Więcej informacji o tym pliku znajdziesz w artykule o dekodowaniu zaciemnionego zrzutu stosu.

Uwaga: uruchamianie polecenia traceview z poziomu wiersza poleceń zostało wycofane.

Omówienie logu czasu

Po otwarciu logu śledzenia w widoku śledzenia dane są wyświetlane za pomocą tych 2 paneli:

  • Okienko osi czasu z opisem, kiedy każdy wątek rozpoczyna i zamyka metodę
  • Panel profilu z podsumowaniem wykonania każdego wątku w okresie logu śledzenia.

W sekcjach poniżej znajdziesz dodatkowe informacje o panelach wyjściowych funkcji traceview.

Okienko osi czasu

Rysunek 1 przedstawia zbliżenie panelu osi czasu. Wykonanie każdego wątku jest pokazywane w osobnym wierszu, a czas upływający zwiększa się w prawej części strony. Każda metoda jest przedstawiona w różnych kolorach. Cienkie linie pod pierwszym wierszem pokazują elementy podrzędne wybranej metody (od wejścia do wyjścia).

Okienko osi czasu widoku logu czasu

Rysunek 1. Panel osi czasu w widoku logu czasu.

Okienko profilu

Jak widać na ilustracji 2, panel profilu zawiera listę wszystkich metod wykonanych przez system w danym okresie logu śledzenia oraz czas poświęcony na wykonanie tych metod. Metoda wywołująca inną metodę jest nazywana elementem nadrzędnym, a metody wywoływane przez element nadrzędny są nazywane elementami podrzędnymi. Gdy wybierzesz metodę, kliknij ją, aby wyświetlić zarówno jej elementy nadrzędne, jak i podrzędne, w 2 osobnych węzłach.

W przypadku każdej metody (węzeł najwyższego poziomu) tabela pokazuje czas (w milisekundach) uwzględniający i wyłączny oraz odsetek łącznego czasu. Czas wyłączny to czas wykonania własnego kodu metody, a czas uwzględnienia to czas poświęcony na wykonanie kodu metody plus czas spędzony na wykonaniu elementów podrzędnych. Informacje o czasie są też podawane w czasie rzeczywistym i czasie pracy procesora. Czas procesora uwzględnia tylko czas, w którym wątek aktywnie wykorzystuje czas procesora. W czasie rzeczywistym dostarcza informacji o czasie od momentu włączenia metody przez aplikację do jej zamknięcia, niezależnie od tego, czy wątek jest aktywny czy uśpiony.

W przypadku każdego węzła najwyższego poziomu w panelu profilu kolumna Wywołania + Rejestr, Wywołania/Łączna liczba w tabeli (niewidocznej na ilustracji 2) zawiera liczbę wywołań metody i liczbę wywołań rekurencyjnych. W przypadku metod nadrzędnych i podrzędnych ta kolumna pokazuje liczbę wywołań, w przypadku których metoda była elementem nadrzędnym lub nadrzędnym wobec metody w węźle najwyższego poziomu.

Panel profilu logu czasu.

Rysunek 2. Panel profilu logu czasu.

Znane problemy z widokiem danych

Logowanie logów czasu nie obsługuje dobrze wątków, co powoduje następujące problemy:

  • Jeśli wątek zostanie zamknięty podczas profilowania, nazwa wątku nie zostanie wysłana (co jest dostępne w Androidzie 5.1 i nowszych).
  • Maszyna wirtualna używa identyfikatorów wątków. Jeśli wątek zostanie zatrzymany, a rozpocznie się kolejny, może on otrzymać ten sam identyfikator.