Rejestruj ślady

Aby rozpocząć rejestrowanie logu czasu, wybierz konfigurację rejestrowania z menu powyżej lub poniżej programu profilującego CPU i kliknij Record.

Rysunek 1. Program profilujący procesora wyświetla stan, czas trwania i typ wykonywanego nagrania.

Wejdź w interakcję z aplikacją, a gdy skończysz, kliknij Zatrzymaj. Program profilujący automatycznie wyświetla informacje dotyczące śledzenia w panelu śledzenia, jak pokazano na ilustracji 2.

Rysunek 2. program profilujący CPU po zarejestrowaniu logu czasu.

  1. Wybrany zakres: określa fragment zarejestrowanego czasu na kontrolę w panelu śledzenia. Gdy rejestrujesz ślad po raz pierwszy, program profilujący CPU automatycznie wybiera całą długość nagrania na osi czasu procesora. Aby zbadać dane logu czasu tylko dla części zarejestrowanego zakresu czasu, przeciągnij krawędzie podświetlonego obszaru.
  2. Sekcja Interakcja: wyświetla na osi czasu zdarzenia interakcji użytkownika i cyklu życia aplikacji.
  3. Sekcja Wątki: wyświetla aktywność stanu wątku (np. uruchomienie, uśpienie itp.) oraz wykres wywołań (lub wykres zdarzeń śledzenia w logu czasu) dla każdego wątku na osi czasu.
    • Używaj myszy i skrótów klawiszowych, aby poruszać się po osi czasu.
    • Aby rozwinąć lub zwinąć wątek, kliknij dwukrotnie jego nazwę lub naciśnij Enter, gdy wybrany jest wątek.
    • Wybierz wątek, aby wyświetlić dodatkowe informacje w panelu Analiza. Aby wybrać wiele wątków, przytrzymaj Shift lub Ctrl (Command na Macu).
    • Wybierz wywołanie metody (lub zdarzenie śledzenia w systemie śledzenia systemu), aby wyświetlić dodatkowe informacje w panelu Analiza.
  4. Panel analizy: wyświetla dane logu czasu z wybranego zakresu czasowego i wybranego wywołania wątku lub metody. W tym panelu możesz wybrać, jak wyświetlać każdy zrzut stosu (za pomocą kart analizy) i jak mierzyć czas wykonywania (za pomocą menu z informacjami o czasie).
  5. Karty panelu analizy: wybierz sposób wyświetlania szczegółów logu czasu. Szczegółowe informacje o każdej opcji znajdziesz w sekcji Sprawdzanie logów czasu.
  6. Menu odniesienia do czasu: wybierz jedną z tych opcji, aby określić sposób pomiaru czasu dla każdego wywołania (obsługiwane tylko w przypadku metod Javy typu Sample/Trace):
    • Zegar ścienny: informacje o czasie przedstawiają rzeczywisty czas, który upłynął.
    • Czas wątku: informacje o czasie reprezentują rzeczywisty czas, który upłynął, pomniejszony o dowolną część tego czasu, gdy wątek nie zużywa zasobów procesora. W przypadku każdego połączenia czas wątku jest zawsze krótszy lub równy zegarowi zegarowemu. Użycie czasu wątku pozwala lepiej zrozumieć, jaka część rzeczywistego wykorzystania procesora w wątku jest zużywana przez daną metodę lub funkcję.
  7. Filtruj: filtruje dane śledzenia według funkcji, metody, klasy lub nazwy pakietu. Jeśli na przykład chcesz szybko zidentyfikować dane logu czasu związane z określonym wywołaniem, wpisz nazwę w polu wyszukiwania. Na karcie Wykres flamyczny wyróżnione są stosy wywołań, które zawierają wywołanie, pakiet lub klasę pasujące do wyszukiwanego hasła. Na kartach Od góry i Od dołu te stosy wywołań mają wyższy priorytet niż inne wyniki śledzenia. Te opcje możesz też włączyć, zaznaczając odpowiednie pole obok pola wyszukiwania:
    • Wyrażenie regularne: użyj tej opcji, aby uwzględnić w wyszukiwaniu wyrażenia regularne.
    • Uwzględniaj wielkość liter:użyj tej opcji, jeśli przy wyszukiwaniu wielkość liter ma znaczenie.
Wskazówka: podczas sprawdzania osi czasu Threads dostępne są te skróty:
  • Powiększanie: naciśnij W lub obróć kółko myszy, przytrzymując Ctrl (Command na Macu).
  • Pomniejszanie: naciśnij S lub obróć kółko myszy do tyłu, trzymając naciśnięty Ctrl (Command na Macu).
  • Przesuwanie w lewo: naciśnij A lub przeciągnij mysz w prawo, przytrzymując spację.
  • Przesuwanie w prawo: naciśnij D lub przeciągnij mysz w lewo, przytrzymując spację.
  • Rozwijanie lub zwijanie wątku: kliknij dwukrotnie nazwę wątku lub naciśnij Enter, gdy wątek jest wybrany.

Wybierz konfigurację nagrywania

Zanim zaczniesz rejestrować informacje w logu czasu, wybierz odpowiednią konfigurację rejestrowania dla informacji o profilowaniu, które chcesz rejestrować:

  • Przykładowe metody Java: przechwytuje stos wywołań aplikacji w częstych odstępach czasu podczas wykonywania kodu w języku Java. Program profilujący porównuje zbiory przechwyconych danych, aby uzyskać informacje o czasie i wykorzystaniu zasobów na temat wykonywania kodu w języku Java w aplikacji.

    Wewnętrzny problem w zakresie śledzenia opartym na próbkowaniu polega na tym, że jeśli Twoja aplikacja wejdzie na metodę po przechwyceniu stosu wywołań i zamknie metodę przed następnym zapisem, wywołanie metody nie zostanie zarejestrowane przez program profilujący. Jeśli interesują Cię metody śledzenia o tak krótkich cyklach życia, skorzystaj ze śledzenia instrumentowanego.

  • Trace Methods Java (Śledzenie metod Javy): włącza aplikację w czasie działania tak, aby rejestrowała sygnaturę czasową na początku i na końcu każdego wywołania metody. Sygnatury czasowe są zbierane i porównywane z danymi śledzenia metod, w tym informacjami o czasie i wykorzystaniu procesora.

    Pamiętaj, że nakłady pracy związane z instrumentowaniem poszczególnych metod wpływają na wydajność środowiska wykonawczego i mogą wpływać na dane dotyczące profilowania. Jest to jeszcze bardziej zauważalne w przypadku metod o stosunkowo krótkim cyklu życia. Poza tym, jeśli aplikacja wykonuje dużą liczbę metod w krótkim czasie, program profilujący może szybko przekroczyć limit rozmiaru pliku i może nie być w stanie zarejestrować dalszych danych śledzenia.

  • Przykładowe funkcje C/C++: rejestruje próbkowane ślady wątków natywnych aplikacji. Aby użyć tej konfiguracji, musisz wdrożyć swoją aplikację na urządzeniu z Androidem 8.0 (poziom interfejsu API 26) lub nowszym.

    Wewnętrznie ta konfiguracja używa obiektu simpleperf do śledzenia kodu natywnego Twojej aplikacji. Jeśli chcesz określić dodatkowe opcje dla simpleperf, takie jak próbkowanie konkretnych procesorów urządzenia lub określenie czasu trwania próbkowania z dużą dokładnością, możesz użyć simpleperf w wierszu poleceń.

  • Śledzenie wywołań systemu: rejestruje szczegółowe informacje, które umożliwiają sprawdzenie interakcji aplikacji z zasobami systemowymi. Możesz sprawdzać dokładne czasy i czasy trwania stanów wątków, wizualizować miejsca, w których wąskie gardła procesora znajdują się we wszystkich rdzeniach, oraz dodawać do analizy niestandardowe zdarzenia logu czasu. Takie informacje mogą być kluczowe podczas rozwiązywania problemów z wydajnością. Aby użyć tej konfiguracji, musisz wdrożyć swoją aplikację na urządzeniu z Androidem 7.0 (poziom interfejsu API 24) lub nowszym.

    Podczas korzystania z tej konfiguracji śledzenia możesz wizualnie oznaczyć ważne procedury kodu na osi czasu programu profilującego, instrumentując kod. Aby instrumentować kod C/C++, użyj native tracing API udostępnionego przez trace.h. Aby instrumentować kod Java, użyj klasy Trace. Więcej informacji znajdziesz w artykule o dostosowywaniu kodu aplikacji.

    Ta konfiguracja śledzenia została utworzona na podstawie systrace. Możesz użyć narzędzia wiersza poleceń systrace, aby określić opcje inne niż dostępne w programie profilującym CPU. Dodatkowe dane na poziomie systemu dostarczane przez systrace mogą pomóc Ci zbadać natywne procesy systemu i rozwiązać problemy z porzuconymi lub opóźnionymi klatkami.

    Na urządzeniach z Androidem 9 (poziom interfejsu API 28) lub nowszym możesz użyć aplikacji systemowej o nazwie Śledzenie systemu, aby rejestrować ślady systemu na urządzeniu.

Tworzenie, edytowanie i wyświetlanie konfiguracji nagrywania

Konfiguracje nagrywania możesz tworzyć, edytować i wyświetlać w oknie Procesor nagrywania Konfiguracje, które się otwiera, klikając Edytuj konfiguracje w menu konfiguracji nagrywania u góry programu profilującego procesora.

Aby wyświetlić ustawienia istniejącej konfiguracji nagrywania, wybierz ją w lewym panelu okna Konfiguracje nagrywania procesora.

Aby utworzyć nową konfigurację nagrywania:

  1. W lewym górnym rogu okna kliknij Dodaj . Spowoduje to utworzenie nowej konfiguracji z ustawieniami domyślnymi.
  2. Nazwij konfigurację.
  3. Wybierz Technologia śledzenia.
  4. W przypadku konfiguracji rejestracji próbkowanej określ odstęp próbkowania w mikrosekundach (μs). Ta wartość reprezentuje czas między poszczególnymi próbkami stosu wywołań aplikacji. Im krótszy odstęp, tym szybciej osiągasz limit rozmiaru zarejestrowanych danych.
  5. Możesz określić limit rozmiaru pliku (w megabajtach (MB)) dla zarejestrowanych danych zapisywanych na podłączonym urządzeniu. Gdy zatrzymasz rejestrowanie, Android Studio przeanalizuje te dane i wyświetli je w oknie programu profilującego. Jeśli więc zwiększysz limit i zarejestrujesz dużą ilość danych, Android Studio przeanalizuje plik znacznie dłużej i może przestać reagować.

    Uwaga: jeśli używasz połączonego urządzenia z Androidem 8.0 (poziom interfejsu API 26) lub nowszym, nie ma limitu rozmiaru pliku danych śledzenia, a ta wartość jest ignorowana. Musisz jednak uważać, ile danych urządzenie zbiera po każdym nagraniu – Android Studio może mieć problemy z analizą dużych plików śledzenia. Jeśli np. rejestrujesz próbkowany ślad z krótkim interwałem próbkowania lub ślad instrumentowany, a aplikacja wywołuje wiele metod w krótkim czasie, szybko generujesz duże pliki śledzenia.

  6. Aby zaakceptować zmiany i kontynuować wprowadzanie zmian w innych konfiguracjach, kliknij Zastosuj. Aby zaakceptować wszystkie zastosowane zmiany i zamknąć okno, kliknij OK.

Rejestrowanie aktywności procesora za pomocą interfejsu Debug API

Możesz użyć interfejsu API Debug, aby umożliwić aplikacji uruchamianie i zatrzymywanie rejestrowania aktywności procesora w programie profilującym procesora.

Program profilujący CPU rozpoczyna nagrywanie, gdy aplikacja wywołuje metodę startMethodTracing(String tracePath), a oprogramowanie profilu procesora przestaje rejestrować, gdy aplikacja wywołuje metodę stopMethodTracing(). Podczas rejestrowania aktywności procesora aktywowanej za pomocą tego interfejsu API program profilujący procesora pokazuje Debug API jako aktywną konfigurację rejestrowania procesora.

Aby kontrolować rejestrowanie aktywności procesora za pomocą interfejsu Debug API, wdróż swoją aplikację na urządzeniu z Androidem 8.0 (poziom API 26) lub nowszym. Nagrywanie inicjowane przez interfejs API jest obsługiwane w aplikacjach z możliwością profilowania. Jednak aby wyświetlać stan nagrywania w interfejsie, wymagana jest aplikacja z możliwością debugowania.

Ważne: interfejs Debug API powinien być używany niezależnie od innych sposobów uruchamiania i zatrzymywania rejestrowania aktywności procesora, takich jak przyciski w graficznym interfejsie programu profilującego procesor i ustawienia w konfiguracji nagrywania do automatycznego nagrywania po uruchomieniu aplikacji.

Ze względu na limit rozmiaru bufora wynoszący 8 MB metoda startMethodTracing(String tracePath) w interfejsie API Debug jest przeznaczona do stosowania w krótkich odstępach czasu lub w sytuacjach, w których trudno jest rozpocząć/zatrzymać nagrywanie ręcznie. Dłuższe nagrania prowadzone są za pomocą interfejsu programu profilującego w Android Studio.

Więcej informacji znajdziesz w artykule o generowaniu logów śledzenia przez instrumentowanie aplikacji.

Rejestrowanie aktywności procesora podczas uruchamiania aplikacji

Aby rozpocząć automatyczne rejestrowanie aktywności procesora podczas uruchamiania aplikacji, wykonaj te czynności:

  1. Wybierz Uruchom > Edytuj konfiguracje.
  2. Na karcie Profilowanie zaznacz pole Zacznij rejestrować ślad metody po uruchomieniu.
  3. Wybierz z menu konfigurację rejestrowania procesora.
  4. Kliknij Zastosuj.
  5. Wdróż aplikację na urządzeniu z Androidem 8.0 (poziom interfejsu API 26) lub nowszym, wybierając Uruchom > Profil.