Stosy wywołań są przydatne do identyfikowania punktów krytycznych wykorzystania CPU, czyli fragmentów kodu, których wykonanie zajmuje dużo czasu. Stosy wywołań pomagają zrozumieć, która część kodu została wykonana i dlaczego została wywołana.
Omówienie próbki stosu wywołań
Aby spróbować wywołać stos, wybierz zadanie Znajdź najczęściej używane miejsca w procesorze (próbka stosu wywołań) na karcie Główna w profilerze Androida Studio. Po przeanalizowaniu nagrania zobaczysz te elementy wizualne:
Uzupełnieniem osi czasu Użycie procesora i Interakcje jest sekcja Wątki, która pokazuje klatki dla każdego wywołania wykonywanego przez aplikację i system. Oto kilka wskazówek dotyczących poruszania się po próbce stosu wywołań:
- Rozwiń interesujący Cię wątek i użyj skrótów klawiszowych, aby poruszać się po ramkach stosu. Kliknij ramkę stosu, aby uzyskać szczegółowe informacje o wydarzeniu i powiązanych wywołaniach w panelu Analiza.
- Aby filtrować określone typy ramek stosu, kliknij Zwiń ramki i zaznacz typy ramek, które chcesz ukryć. Zwijanie ramek powoduje ich usunięcie z sekcji Wątki i Analiza. W zależności od wyników analizy możesz zwinąć ramki z maszyny wirtualnej Java (np.
android::AndroidRuntime::start
iart::{...}
) oraz jądra systemu (np.[kernel.kallsyms]+{offset}
). Zwykle odpowiada to zwinięciu ramek związanych z[kernel.kallsyms]
,/apex/
i/system/*
.
Program w języku Java lub Kotlin jest zwykle wykonywany przez wirtualną maszynę Javy. Dlatego, gdy Android Studio zbiera stos wywołań dla takiego programu, zwykle zawiera on nie tylko kod Java lub Kotlin, ale też kod natywny wymagany do uruchomienia programu i do komunikacji z systemem oraz sprzętem.
- Aby przejść do kodu źródłowego powiązanego z ramką stosu, kliknij ramkę prawym przyciskiem myszy i wybierz Przejdź do źródła.
- Aby wyróżnić w tabeli zdarzeń ramkę stosu powiązaną ze zdarzeniem, kliknij to zdarzenie.
Informacje o pozostałych wizualizacjach znajdziesz w artykule Nagrywanie śladu systemowego oraz w słowniczku wykresów.
Próbkowanie kodu natywnego za pomocą wiersza poleceń
Android Studio używa wewnętrznie narzędzia simpleperf do śledzenia kodu natywnego aplikacji. Jeśli chcesz określić dodatkowe opcje Simpleperf, takie jak próbkowanie określonych procesorów urządzenia lub określanie czasu próbkowania z dużą dokładnością, możesz użyć Simpleperf z wiersza poleceń.