Analizza i profili con l'AI

Poiché i profili ProfilingManager utilizzano il formato Perfetto standard e possono essere interrogati con PerfettoSQL, puoi accoppiare un agente di programmazione AI con la competenza Perfetto AI per automatizzare l'analisi delle cause principali direttamente nel tuo workspace, anziché navigare manualmente nelle cronologie nell'interfaccia utente di Perfetto o scrivere query personalizzate sulla libreria standard di Perfetto:

  1. Carica il profilo: l'agente apre il profilo raccolto utilizzando trace_processor di Perfetto.
  2. Esegue query di diagnostica: guidato dalla skill AI di Perfetto, l'agente esegue query sui moduli della libreria standard (ad esempio android.frames.timeline per i jank o android.memory.heap_graph.dominator_tree per le perdite di memoria) e perfeziona in modo iterativo le query.
  3. Correlazione con il codice sorgente: l'agente mappa le sezioni di traccia personalizzate, gli stack di chiamate campionati o i nomi delle classi di conservazione nel profilo direttamente ai file sorgente Kotlin o Java e propone una correzione.

Configura la skill Perfetto AI

La skill AI di Perfetto open source insegna agli agenti di programmazione come eseguire trace_processor, scrivere PerfettoSQL e seguire workflow guidati per l'analisi della memoria e della CPU di Android. Ogni installazione include un wrapper trace_processor, quindi non è necessario installare trace_processor separatamente:

  • Installa con l'AI: esegui il seguente prompt in qualsiasi agente di programmazione AI:

    Following instructions from https://perfetto.dev/docs/getting-started/using-ai set up the Perfetto AI skill to be usable by any agent
    
  • Installa manualmente: segui le istruzioni di configurazione riportate in Utilizzo dell'AI con Perfetto per il tuo agente (ad esempio Claude Code, Codex, Cursor, Antigravity o OpenCode).

Esempi di workflow

Inserisci uno o più profili acquisiti nel tuo workspace e chiedi all'agente AI di indagare. Puoi analizzare un singolo profilo per diagnosticare un problema individuale o passare più profili per confrontare pattern e regressioni in blocco.

Analizza i dump dell'heap Java e gli errori OOM

Quando fornisci un dump dell'heap Java acquisito direttamente con PROFILING_TYPE_JAVA_HEAP_DUMP o automaticamente tramite il trigger TRIGGER_TYPE_OOM, un agente AI che utilizza la skill Perfetto AI può aiutarti a identificare:

  • Perdite di memoria: oggetti, come istanze Activity o Fragment distrutte, che rimangono raggiungibili dalle radici del GC quando avrebbero dovuto essere recuperati.
  • Oggetti con un numero elevato di duplicati: classi con un numero di istanze inaspettatamente elevato che consumano collettivamente una grande parte dello heap.
  • Inefficienze della memoria: cache sovradimensionate, strutture di dati ridondanti o singoli oggetti dominatori che conservano una quantità di memoria sproporzionata.

Per esaminare un dump dell'heap OutOfMemoryError e correlarlo al codice sorgente della tua app, esegui un prompt come il seguente:

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.

Per visualizzare un esempio completo del report generato da questo prompt, incluso il percorso di conservazione dell'albero dominatore, la causa principale del codice sorgente e la correzione proposta, consulta Automatizza l'indagine OOM con un agente AI in Case study: esegui il debug di un arresto anomalo OOM.

Analizza i tracciamenti del sistema e gli errori ANR

Quando fornisci un tracciamento del sistema acquisito direttamente con PROFILING_TYPE_SYSTEM_TRACE o automaticamente tramite l'attivatore TRIGGER_TYPE_ANR, un agente AI che utilizza la skill Perfetto AI può aiutarti a identificare:

  • Operazioni di blocco del thread principale: sezioni di traccia a lunga esecuzione o chiamate sincrone che impediscono al thread dell'interfaccia utente di elaborare gli eventi di input o di disegnare i frame prima della soglia ANR.
  • Colli di bottiglia dello stato del thread: intervalli in cui il thread principale è bloccato negli stati Sleeping (ad esempio, blocco dell'I/O di rete o timeout di Thread.sleep), Blocked (conflitto di blocco) o Runnable (ritardi di pianificazione della CPU).
  • Picchi di utilizzo della CPU nel thread principale: calcoli complessi o loop stretti eseguiti direttamente nel thread dell'interfaccia utente anziché in un thread in background.

Per esaminare un tracciamento del sistema ANR e correlarlo al codice sorgente della tua app, esegui un prompt simile al seguente:

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>.

Per visualizzare un esempio completo del report generato da questo prompt, tra cui la suddivisione delle sezioni del thread principale, la ricostruzione dell'intervallo thread_state e la mappatura del codice sorgente, consulta Automatizza l'analisi degli ANR con un agente AI in Case study: esegui il debug di un ANR.