Da ProfilingManager-Profile das Standard-Perfetto-Format verwenden und mit PerfettoSQL abgefragt werden können, können Sie einen KI-Codierungs-Agenten mit dem Perfetto AI-Skill kombinieren, um die Ursachenanalyse direkt in Ihrem Arbeitsbereich zu automatisieren, anstatt manuell in den Zeitachsen der Perfetto-Benutzeroberfläche zu navigieren oder benutzerdefinierte Abfragen für die Perfetto-Standardbibliothek zu schreiben:
- Profil laden: Der Agent öffnet das erfasste Profil mit
trace_processorvon Perfetto. - Diagnoseabfragen ausführen: Der KI-Agent wird vom Perfetto AI Skill angeleitet und fragt Standardbibliotheksmodule ab (z. B.
android.frames.timelinefür Ruckler oderandroid.memory.heap_graph.dominator_treefür Speicherlecks). Dabei verfeinert er seine Abfragen iterativ. - Mit Quellcode korrelieren: Der Agent ordnet benutzerdefinierte Trace-Slices, Stichproben von Aufrufstacks oder beibehaltene Klassennamen im Profil direkt Ihren Kotlin- oder Java-Quelldateien zu und schlägt eine Lösung vor.
Perfetto-KI-Skill einrichten
Der Open-Source-Perfetto-KI-Skill zeigt Coding-Agents, wie sie trace_processor ausführen, PerfettoSQL schreiben und geführte Workflows für die Android-Speicher- und CPU-Analyse befolgen. Jede Installation enthält einen trace_processor-Wrapper, sodass Sie trace_processor nicht separat installieren müssen:
Mit KI installieren: Führen Sie den folgenden Prompt in einem beliebigen KI-Coding-Agenten aus:
Following instructions from https://perfetto.dev/docs/getting-started/using-ai set up the Perfetto AI skill to be usable by any agentManuell installieren: Folgen Sie der Einrichtungsanleitung unter KI mit Perfetto verwenden für Ihren Agenten (z. B. Claude Code, Codex, Cursor, Antigravity oder OpenCode).
Beispiele für Workflows
Platzieren Sie ein oder mehrere erfasste Profile in Ihrem Arbeitsbereich und fordern Sie Ihren KI-Agenten auf, sie zu untersuchen. Sie können ein einzelnes Profil analysieren, um ein individuelles Problem zu diagnostizieren, oder mehrere Profile übergeben, um Muster und Regressionen im Bulk zu vergleichen.
Java-Heap-Dumps und OOMs analysieren
Wenn Sie einen Java-Heap-Dump bereitstellen, der direkt mit PROFILING_TYPE_JAVA_HEAP_DUMP oder automatisch über den Trigger TRIGGER_TYPE_OOM erfasst wurde, kann ein KI-Agent, der den Perfetto-KI-Skill verwendet, Ihnen helfen, Folgendes zu identifizieren:
- Speicherlecks: Objekte wie zerstörte
Activity- oderFragment-Instanzen, die von GC-Roots aus erreichbar bleiben, obwohl sie hätten freigegeben werden sollen. - Stark duplizierte Objekte: Klassen mit einer unerwartet hohen Anzahl von Instanzen, die zusammen einen großen Teil des Heaps belegen.
- Speicherineffizienzen: Zu große Caches, redundante Datenstrukturen oder einzelne Dominatorobjekte, die unverhältnismäßig viel Speicher belegen.
Wenn Sie einen OutOfMemoryError-Heap-Dump untersuchen und mit dem Quellcode Ihrer Anwendung korrelieren möchten, führen Sie einen Prompt wie den folgenden aus:
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.
Ein vollständiges Beispiel für den Bericht, der mit diesem Prompt generiert wird, einschließlich des Aufbewahrungspfads des Dominatorbaums, der Ursache im Quellcode und des vorgeschlagenen Fixes, finden Sie unter OOM-Untersuchung mit einem KI-Agenten automatisieren in der Fallstudie: OOM-Absturz debuggen.
System-Traces und ANRs analysieren
Wenn Sie einen System-Trace bereitstellen, der direkt mit PROFILING_TYPE_SYSTEM_TRACE oder automatisch über den Trigger TRIGGER_TYPE_ANR erfasst wurde, kann ein KI-Agent mit dem Perfetto-KI-Skill Ihnen helfen, Folgendes zu identifizieren:
- Blockierende Vorgänge im Hauptthread: Lang andauernde Trace-Slices oder synchrone Aufrufe, die verhindern, dass der UI-Thread Eingabeereignisse verarbeitet oder Frames vor dem ANR-Schwellenwert zeichnet.
- Engpässe beim Thread-Status: Intervalle, in denen der Hauptthread im Status
Sleeping(z. B. blockierende Netzwerk-E/A oderThread.sleep-Zeitüberschreitungen),Blocked(Sperrkonflikt) oderRunnable(CPU-Planungsverzögerungen) hängen bleibt. - CPU-Spitzen im Hauptthread: Rechenintensive Berechnungen oder enge Schleifen, die direkt im UI-Thread statt in einem Hintergrundthread ausgeführt werden.
Wenn Sie einen ANR-System-Trace untersuchen und mit dem Quellcode Ihrer App in Verbindung bringen möchten, führen Sie einen Prompt wie den folgenden aus:
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>.
Ein vollständiges Beispiel für den Bericht, der mit diesem Prompt generiert wird, einschließlich der Aufschlüsselung der Slices des Hauptthreads, der Rekonstruktion des thread_state-Intervalls und der Zuordnung des Quellcodes, finden Sie unter ANR-Untersuchung mit einem KI-Agenten automatisieren in der Fallstudie: ANR-Fehler beheben.