Menganalisis profil dengan AI

Karena profil ProfilingManager menggunakan format Perfetto standar dan dapat dikueri dengan PerfettoSQL, Anda dapat menyambungkan agen coding AI dengan kemampuan AI Perfetto untuk mengotomatiskan analisis akar masalah langsung di ruang kerja Anda, alih-alih menavigasi linimasa secara manual di UI Perfetto atau menulis kueri kustom terhadap Library Standar Perfetto:

  1. Memuat profil: Agen membuka profil yang dikumpulkan menggunakan trace_processor Perfetto.
  2. Menjalankan kueri diagnostik: Dipandu oleh keahlian AI Perfetto, agen membuat kueri modul library standar (seperti android.frames.timeline untuk jank atau android.memory.heap_graph.dominator_tree untuk kebocoran memori) dan menyempurnakan kuerinya secara iteratif.
  3. Menghubungkan dengan kode sumber: Agen memetakan slice trace kustom, stack panggilan yang diambil sampelnya, atau mempertahankan nama class di profil langsung ke file sumber Kotlin atau Java Anda dan mengusulkan perbaikan.

Menyiapkan kemampuan AI Perfetto

Keahlian AI Perfetto open source mengajarkan agen coding cara menjalankan trace_processor, menulis PerfettoSQL, dan mengikuti alur kerja terpandu untuk analisis memori dan CPU Android. Setiap penginstalan memaketkan wrapper trace_processor, sehingga Anda tidak perlu menginstal trace_processor secara terpisah:

  • Instal dengan AI: Jalankan perintah berikut di agen coding AI mana pun:

    Following instructions from https://perfetto.dev/docs/getting-started/using-ai set up the Perfetto AI skill to be usable by any agent
    
  • Instal secara manual: Ikuti petunjuk penyiapan di Menggunakan AI dengan Perfetto untuk agen Anda (seperti Claude Code, Codex, Cursor, Antigravity, atau OpenCode).

Contoh alur kerja

Tempatkan satu atau beberapa profil yang diambil di ruang kerja Anda dan minta agen AI Anda untuk menyelidiki. Anda dapat menganalisis satu profil untuk mendiagnosis masalah individual atau meneruskan beberapa profil untuk membandingkan pola dan regresi secara massal.

Menganalisis heap dump Java dan OOM

Saat Anda memberikan heap dump Java yang diambil langsung dengan PROFILING_TYPE_JAVA_HEAP_DUMP atau secara otomatis melalui pemicu TRIGGER_TYPE_OOM, agen AI yang menggunakan kemampuan AI Perfetto dapat membantu Anda mengidentifikasi:

  • Kebocoran memori: Objek, seperti instance Activity atau Fragment yang dihancurkan, yang tetap dapat dijangkau dari root GC padahal seharusnya sudah diklaim kembali.
  • Objek yang sangat banyak diduplikasi: Class dengan jumlah instance yang sangat tinggi dan secara kolektif menggunakan sebagian besar heap.
  • Inefisiensi memori: Cache yang terlalu besar, struktur data yang redundan, atau objek dominator tunggal yang mempertahankan jumlah memori yang tidak proporsional.

Untuk menyelidiki heap dump OutOfMemoryError dan menghubungkannya dengan kode sumber aplikasi Anda, jalankan perintah seperti berikut:

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.

Untuk melihat contoh lengkap laporan yang dihasilkan perintah ini, termasuk jalur retensi hierarki dominator, penyebab utama kode sumber, dan perbaikan yang diusulkan, lihat Mengotomatiskan investigasi OOM dengan agen AI di Studi kasus: Men-debug error OOM.

Menganalisis pelacakan sistem dan ANR

Saat Anda memberikan pelacakan sistem yang diambil langsung dengan PROFILING_TYPE_SYSTEM_TRACE atau secara otomatis melalui pemicu TRIGGER_TYPE_ANR, agen AI yang menggunakan kemampuan AI Perfetto dapat membantu Anda mengidentifikasi:

  • Memblokir operasi thread utama: Slice rekaman aktivitas yang berjalan lama atau panggilan sinkron yang mencegah UI thread memproses peristiwa input atau menggambar frame sebelum batas ANR.
  • Bottleneck status thread: Interval saat thread utama terjebak dalam status Sleeping (seperti memblokir I/O jaringan atau waktu tunggu Thread.sleep), Blocked (pertentangan kunci), atau Runnable (penundaan penjadwalan CPU).
  • Lonjakan CPU thread utama: Komputasi yang mahal atau loop ketat yang dieksekusi langsung di UI thread, bukan di thread latar belakang.

Untuk menyelidiki pelacakan sistem ANR dan menghubungkannya dengan kode sumber aplikasi Anda, jalankan perintah seperti berikut:

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

Untuk melihat contoh lengkap laporan yang dihasilkan perintah ini, termasuk perincian slice thread utama, rekonstruksi interval thread_state, dan pemetaan kode sumber, lihat Mengotomatiskan investigasi ANR dengan agen AI di Studi kasus: Men-debug ANR.