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:
- Uruchom Android Device Monitor.
- W Android Device Monitor wybierz File > Open File (Plik > Otwórz plik).
- Przejdź do pliku
.trace
, który chcesz sprawdzić. - 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).
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.
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.