Como os perfis do ProfilingManager usam o formato padrão do Perfetto e
podem ser consultados com o PerfettoSQL, é possível parear um agente de programação de IA com a
habilidade de IA do Perfetto para automatizar a análise de causa raiz diretamente no seu
espaço de trabalho, em vez de navegar manualmente pelas linhas do tempo na interface do Perfetto
ou escrever consultas personalizadas na biblioteca padrão do Perfetto:
- Carregar o perfil: o agente abre o perfil coletado usando o
trace_processordo Perfetto. - Executar consultas de diagnóstico: guiado pela habilidade de IA do Perfetto, o agente
consulta módulos de biblioteca padrão (como
android.frames.timelinepara instabilidade ouandroid.memory.heap_graph.dominator_treepara vazamentos de memória) e refina as consultas de forma iterativa. - Correlacionar com o código-fonte: o agente mapeia frações de trace personalizadas, pilhas de chamadas amostradas ou nomes de classes de retenção no perfil diretamente para os arquivos de origem Kotlin ou Java e propõe uma correção.
Configurar a habilidade de IA do Perfetto
A habilidade de IA do Perfetto (link em inglês) de código aberto ensina os agentes de programação a executar
trace_processor, escrever PerfettoSQL e seguir fluxos de trabalho guiados para análise de memória
e CPU do Android. Cada instalação inclui um wrapper trace_processor, então
não é necessário instalar o trace_processor separadamente:
Instalar com IA: execute o seguinte comando em qualquer agente de programação de IA:
Following instructions from https://perfetto.dev/docs/getting-started/using-ai set up the Perfetto AI skill to be usable by any agentInstalar manualmente: siga as instruções de configuração em Como usar a IA com o Perfetto para seu agente (como Claude Code, Codex, Cursor, Antigravity ou OpenCode).
Exemplos de fluxo de trabalho
Coloque um ou mais perfis capturados no seu espaço de trabalho e peça para o agente de IA investigar. É possível analisar um único perfil para diagnosticar um problema individual ou transmitir vários perfis para comparar padrões e regressões em massa.
Analisar heap dumps do Java e OOMs
Quando você fornece um heap dump do Java capturado diretamente com
PROFILING_TYPE_JAVA_HEAP_DUMP ou automaticamente pelo acionador
TRIGGER_TYPE_OOM, um agente de IA que usa a habilidade de IA do Perfetto pode
ajudar a identificar:
- Vazamentos de memória: objetos, como instâncias destruídas de
ActivityouFragment, que permanecem acessíveis pelas raízes da GC quando deveriam ter sido recuperados. - Objetos muito duplicados: classes com uma contagem de instâncias inesperadamente alta que consomem coletivamente uma grande parte do heap.
- Ineficiências de memória: caches superdimensionados, estruturas de dados redundantes ou objetos dominadores únicos que retêm uma quantidade desproporcional de memória.
Para investigar um heap dump do OutOfMemoryError e correlacioná-lo com o código-fonte do app, execute um comando como este:
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.
Para ver um exemplo completo do relatório que esse comando gera, incluindo o caminho de retenção da árvore de dominadores, a causa raiz do código-fonte e a correção proposta, consulte Automatizar a investigação de OOM com um agente de IA em Estudo de caso: depurar uma falha de OOM.
Analisar rastreamentos do sistema e ANRs
Quando você fornece um rastreamento do sistema capturado diretamente com
PROFILING_TYPE_SYSTEM_TRACE ou automaticamente pelo gatilho
TRIGGER_TYPE_ANR, um agente de IA que usa a habilidade de IA do Perfetto pode
ajudar a identificar:
- Bloqueio de operações da linha de execução principal: frações de trace de longa duração ou chamadas síncronas que impedem que a linha de execução de interface processe eventos de entrada ou desenhe frames antes do limite de ANR.
- Gargalos de estado da linha de execução: intervalos em que a linha de execução principal está travada nos estados
Sleeping(como bloqueio de E/S de rede ou tempos limite deThread.sleep),Blocked(concorrência de bloqueio) ouRunnable(atrasos de programação da CPU). - Picos de CPU na linha de execução principal: cálculos caros ou loops apertados sendo executados diretamente na linha de execução de interface, em vez de uma linha de execução em segundo plano.
Para investigar um rastreamento do sistema de ANR e correlacioná-lo com o código-fonte do app, execute um comando como este:
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>.
Para ver um exemplo completo do relatório gerado por esse comando, incluindo o
detalhamento de frações da linha de execução principal, a reconstrução do intervalo thread_state e o
mapeamento do código-fonte, consulte Automatizar a investigação de ANR com um agente de IA
em Estudo de caso: depurar um ANR.