Profile ProfilingManager używają standardowego formatu Perfetto i można je odpytywać za pomocą PerfettoSQL, dlatego możesz połączyć agenta kodowania AI z umiejętnością Perfetto AI, aby zautomatyzować analizę głównych przyczyn bezpośrednio w obszarze roboczym, zamiast ręcznie poruszać się po osiach czasu w interfejsie Perfetto lub pisać niestandardowe zapytania do biblioteki standardowej Perfetto:
- Wczytanie profilu: agent otwiera zebrany profil za pomocą
trace_processorPerfetto. - Wykonywanie zapytań diagnostycznych: agent, kierując się umiejętnościami AI Perfetto, wysyła zapytania do modułów biblioteki standardowej (takich jak
android.frames.timelinew przypadku zacinania się lubandroid.memory.heap_graph.dominator_treew przypadku wycieków pamięci) i iteracyjnie ulepsza swoje zapytania. - Korelacja z kodem źródłowym: agent mapuje niestandardowe fragmenty logów czasu, próbkowane stosy wywołań lub nazwy klas zachowujących w profilu bezpośrednio na pliki źródłowe Kotlin lub Java i proponuje poprawkę.
Konfigurowanie umiejętności AI w Perfetto
Umiejętność AI Perfetto typu open source uczy agentów kodowania, jak uruchamiać trace_processor, pisać PerfettoSQL i postępować zgodnie z instrukcjami dotyczącymi analizy pamięci i procesora Androida. Każda instalacja zawiera pakiet trace_processor, więc nie musisz instalować trace_processor osobno:
Instalacja za pomocą AI: uruchom następujący prompt w dowolnym agencie kodowania AI:
Following instructions from https://perfetto.dev/docs/getting-started/using-ai set up the Perfetto AI skill to be usable by any agentZainstaluj ręcznie: postępuj zgodnie z instrukcjami konfiguracji podanymi w artykule Korzystanie z AI w Perfetto dla Twojego agenta (np. Claude Code, Codex, Cursor, Antigravity lub OpenCode).
Przykłady przepływów pracy
Umieść co najmniej 1 profil w obszarze roboczym i poproś agenta AI o jego przeanalizowanie. Możesz przeanalizować pojedynczy profil, aby zdiagnozować konkretny problem, lub przekazać wiele profili, aby porównać wzorce i regresje zbiorczo.
Analizowanie zrzutów sterty Java i błędów OOM
Gdy podasz zrzut sterty Javy przechwycony bezpośrednio za pomocą PROFILING_TYPE_JAVA_HEAP_DUMP lub automatycznie za pomocą aktywatora TRIGGER_TYPE_OOM, agent AI korzystający z umiejętności Perfetto AI może pomóc Ci zidentyfikować:
- Wycieki pamięci: obiekty, takie jak zniszczone instancje
ActivitylubFragment, które pozostają dostępne z korzeni GC, gdy powinny zostać odzyskane. - Obiekty z dużą liczbą duplikatów: klasy z nieoczekiwanie dużą liczbą instancji, które łącznie zajmują dużą część sterty.
- Nieefektywne wykorzystanie pamięci: zbyt duże pamięci podręczne, nadmiarowe struktury danych lub pojedyncze obiekty dominujące, które zajmują nieproporcjonalnie dużo pamięci.
Aby przeanalizować zrzut stosu OutOfMemoryError i powiązać go z kodem źródłowym aplikacji, uruchom prompta podobnego do tego:
Analyze the Perfetto OOM heap dump at </path/to/profile>, which corresponds to
the codebase located at </path/to/codebase> using the Perfetto AI skill and find
the root cause of the OutOfMemoryError.
Aby zobaczyć kompletny przykład raportu wygenerowanego przez ten prompt, w tym ścieżkę przechowywania drzewa dominatorów, główną przyczynę w kodzie źródłowym i proponowaną poprawkę, zapoznaj się z sekcją Automatyzacja analizy błędu OOM za pomocą agenta AI w studium przypadku: debugowanie błędu OOM.
Analizowanie śledzenia systemu i błędów ANR
Gdy podasz śledzenie systemu zarejestrowane bezpośrednio za pomocą PROFILING_TYPE_SYSTEM_TRACE lub automatycznie za pomocą aktywatora TRIGGER_TYPE_ANR, agent AI korzystający z umiejętności Perfetto AI może pomóc Ci zidentyfikować:
- Blokowanie operacji w wątku głównym: długotrwałe wycinki śladu lub wywołania synchroniczne, które uniemożliwiają wątkowi UI przetwarzanie zdarzeń wejściowych lub rysowanie klatek przed osiągnięciem progu ANR.
- Wąskie gardła stanu wątku: interwały, w których wątek główny utknął w stanie
Sleeping(np. blokowanie wejścia-wyjścia sieci lub przekroczenie limitu czasuThread.sleep),Blocked(rywalizacja o blokadę) lubRunnable(opóźnienia planowania procesora). - Skoki wykorzystania procesora w wątku głównym: kosztowne obliczenia lub ciasne pętle wykonywane bezpośrednio w wątku UI zamiast w wątku w tle.
Aby przeanalizować śledzenie systemu pod kątem błędów ANR i powiązać je z kodem źródłowym aplikacji, uruchom prompta takiego jak ten:
Analyze the Perfetto system trace at </path/to/trace.perfetto-trace>, which
corresponds to an ANR trace, and find the root cause of the ANR using the
Perfetto AI skill. The codebase is located at </path/to/codebase>.
Aby zobaczyć kompletny przykład raportu generowanego przez ten prompt, w tym zestawienie wycinków głównego wątku, rekonstrukcję interwału thread_state i mapowanie kodu źródłowego, zapoznaj się z sekcją Automatyzacja analizy błędów ANR za pomocą agenta AI w studium przypadku: debugowanie błędu ANR.