Поскольку профили ProfilingManager используют стандартный формат Perfetto и поддерживают запросы PerfettoSQL, вы можете использовать ИИ-агента для программирования с навыком Perfetto AI, чтобы автоматизировать анализ основных причин прямо в рабочей области. Это избавит вас от необходимости вручную перемещаться по временным шкалам в интерфейсе Perfetto или писать собственные запросы к стандартной библиотеке Perfetto.
- Загрузка профиля. Агент открывает собранный профиль с помощью
trace_processorPerfetto. - Выполняет диагностические запросы. Руководствуясь ИИ-навыком Perfetto, агент запрашивает модули стандартной библиотеки (например,
android.frames.timelineдля задержек илиandroid.memory.heap_graph.dominator_treeдля утечек памяти) и итеративно уточняет свои запросы. - Сопоставление с исходным кодом. Агент сопоставляет фрагменты пользовательских трассировок, выборки стеков вызовов или имена классов в профиле непосредственно с исходными файлами Kotlin или Java и предлагает исправление.
Как настроить ИИ-навык Perfetto
Навык Perfetto AI с открытым исходным кодом учит агентов программирования запускать trace_processor, писать PerfettoSQL и следовать пошаговым инструкциям по анализу памяти и процессора Android. Каждый установочный пакет содержит оболочку trace_processor, поэтому устанавливать trace_processor отдельно не нужно.
Установка с помощью ИИ. Выполните следующий запрос в любом ИИ-агенте по программированию:
Following instructions from https://perfetto.dev/docs/getting-started/using-ai set up the Perfetto AI skill to be usable by any agentУстановить вручную. Следуйте инструкциям по настройке в статье Использование ИИ с Perfetto для вашего агента (например, Claude Code, Codex, Cursor, Antigravity или OpenCode).
Примеры рабочих процессов
Поместите один или несколько профилей в рабочую область и попросите ИИ-агента проанализировать их. Вы можете проанализировать один профиль, чтобы диагностировать отдельную проблему, или передать несколько профилей, чтобы сравнить закономерности и регрессии в массовом порядке.
Анализ дампов кучи Java и ошибок нехватки памяти
Если вы предоставите дамп кучи Java, полученный напрямую с помощью PROFILING_TYPE_JAVA_HEAP_DUMP или автоматически через триггер TRIGGER_TYPE_OOM, ИИ-агент с навыком Perfetto AI поможет вам определить:
- Утечки памяти. Объекты, например уничтоженные экземпляры
ActivityилиFragment, которые остаются доступными из корней сборщика мусора, когда они должны были быть утилизированы. - Объекты с большим количеством дубликатов. Классы с неожиданно большим количеством экземпляров, которые в совокупности занимают значительную часть кучи.
- Неэффективное использование памяти. Слишком большие кеши, избыточные структуры данных или отдельные доминирующие объекты, занимающие непропорционально большой объем памяти.
Чтобы изучить дамп кучи OutOfMemoryError и сопоставить его с исходным кодом приложения, введите запрос, похожий на следующий:
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.
Чтобы посмотреть полный пример отчета, созданного этим запросом, включая путь удержания дерева доминаторов, основную причину в исходном коде и предлагаемое исправление, ознакомьтесь с разделом Автоматизация исследования OOM с помощью ИИ-агента в статье Пример из практики: отладка сбоя OOM.
Как анализировать трассировки системы и ошибки ANR
Если вы предоставите трассировку системы, полученную напрямую с помощью PROFILING_TYPE_SYSTEM_TRACE или автоматически через триггер TRIGGER_TYPE_ANR, ИИ-агент с навыком Perfetto AI поможет вам определить:
- Блокировка операций основного потока. Длительные фрагменты трассировки или синхронные вызовы, которые не позволяют потоку UI обрабатывать события ввода или отрисовывать кадры до достижения порогового значения ANR.
- Узкие места в состоянии потока. Интервалы, в которых основной поток застревает в состоянии
Sleeping(например, блокировка сетевого I/O или тайм-аутыThread.sleep),Blocked(конкуренция за блокировку) илиRunnable(задержки планирования ЦП). - Пиковые нагрузки на ЦП в основном потоке. Ресурсоемкие вычисления или циклы, которые выполняются непосредственно в потоке UI, а не в фоновом режиме.
Чтобы изучить трассировку системы, связанную с ошибкой ANR, и сопоставить ее с исходным кодом приложения, выполните запрос, подобный следующему:
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>.
Чтобы посмотреть полный пример отчета, созданного по этому запросу, включая разбивку фрагментов основного потока, реконструкцию интервала thread_state и сопоставление исходного кода, прочитайте раздел Автоматизация анализа ANR-ошибок с помощью ИИ-агента в статье Пример из практики: отладка ANR-ошибки.