הפרופילים של ProfilingManager משתמשים בפורמט הרגיל של Perfetto ואפשר לשלוח אליהם שאילתות באמצעות PerfettoSQL. לכן, אתם יכולים לשלב סוכן תכנות מבוסס-AI עם מיומנות ה-AI של Perfetto כדי לבצע ניתוח אוטומטי של שורש הבעיה ישירות בסביבת העבודה, במקום לנווט באופן ידני בציר הזמן בממשק המשתמש של Perfetto או לכתוב שאילתות בהתאמה אישית בספרייה הרגילה של Perfetto:
- טעינת הפרופיל: הנציג פותח את הפרופיל שנאסף באמצעות
trace_processorשל Perfetto. - הרצת שאילתות אבחון: בהנחיית מיומנות ה-AI של Perfetto, הנציג שולח שאילתות למודולים של ספרייה סטנדרטית (כמו
android.frames.timelineלבעיות jank אוandroid.memory.heap_graph.dominator_treeלדליפות זיכרון) ומשפר את השאילתות באופן איטרטיבי. - התאמה לקוד המקור: הסוכן ממפה פרוסות של מעקב מותאם אישית, סטאקים של ביצוע שנדגמו או שמות של מחלקות שמורות בפרופיל ישירות לקובצי המקור של Kotlin או Java, ומציע תיקון.
הגדרת מיומנות ה-AI של Perfetto
מיומנות ה-AI של Perfetto בקוד פתוח מלמדת סוכני תכנות איך להריץ את trace_processor, לכתוב PerfettoSQL ולפעול לפי תהליכי עבודה מודרכים לניתוח הזיכרון וה-CPU ב-Android. כל התקנה כוללת wrapper של trace_processor, כך שלא צריך להתקין את trace_processor בנפרד:
התקנה באמצעות AI: מריצים את ההנחיה הבאה בכל סוכן תכנות מבוסס-AI:
Following instructions from https://perfetto.dev/docs/getting-started/using-ai set up the Perfetto AI skill to be usable by any agentהתקנה ידנית: פועלים לפי הוראות ההגדרה במאמר שימוש ב-AI עם Perfetto לסוכן (כמו Claude Code, Codex, Cursor, Antigravity או OpenCode).
דוגמאות לתהליכי עבודה
מציבים פרופיל אחד או יותר שנוצרו בסביבת העבודה ומבקשים מסוכן ה-AI לחקור אותם. אפשר לנתח פרופיל אחד כדי לאבחן בעיה ספציפית, או להעביר כמה פרופילים כדי להשוות בין דפוסים ורגרסיות בכמות גדולה.
ניתוח של תמונות מצב של הזיכרון מ-Java ושל שגיאות OOM
כשאתם מספקים תמונת מצב של הזיכרון ב-Java שצולמה ישירות באמצעות PROFILING_TYPE_JAVA_HEAP_DUMP או באופן אוטומטי באמצעות הטריגר TRIGGER_TYPE_OOM, סוכן AI שמשתמש במיומנות Perfetto AI יכול לעזור לכם לזהות:
- דליפות זיכרון: אובייקטים, כמו מופעים הרוסים של
ActivityאוFragment, שעדיין נגישים משורשי GC כשהם היו אמורים להיות מוחזרים. - אובייקטים משוכפלים בכמות גדולה: מחלקות עם מספר מופעים גבוה באופן בלתי צפוי, שצורכות יחד חלק גדול מה-heap.
- חוסר יעילות בזיכרון: מטמונים גדולים מדי, מבני נתונים מיותרים או אובייקטים דומיננטיים בודדים ששומרים כמות לא פרופורציונלית של זיכרון.
כדי לבדוק תמונת מצב של הזיכרון ב-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 באמצעות סוכן AI במקרה לדוגמה: ניפוי באגים של קריסה מסוג OOM.
ניתוח של עקבות המערכת ומקרי ANR
כשאתם מספקים עקבות מערכת שצולמו ישירות באמצעות PROFILING_TYPE_SYSTEM_TRACE או באופן אוטומטי באמצעות הטריגר TRIGGER_TYPE_ANR, סוכן AI שמשתמש במיומנות Perfetto AI יכול לעזור לכם לזהות:
- פעולות חסימה ב-thread הראשי: פרוסות מעקב שפועלות במשך זמן רב או קריאות סינכרוניות שמונעות משרשור ה-UI לעבד אירועי קלט או לצייר פריימים לפני סף ה-ANR.
- צווארי בקבוק במצב ה-thread: מרווחים שבהם ה-thread הראשי תקוע במצבים של
Sleeping(כמו חסימה של קלט/פלט ברשת או זמן קצוב לתפוגה שלThread.sleep),Blocked(תחרות על נעילה) אוRunnable(עיכובים בתזמון של המעבד). - קפיצות בשימוש ב-CPU בשרשור הראשי: חישובים כבדים או לולאות הדוקות שפועלים ישירות בשרשור ה-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 באמצעות סוכן AI במקרה לדוגמה: ניפוי באגים של שגיאת ANR.