Traceview הוצא משימוש. אם אתם משתמשים ב-Android Studio מגרסה 3.2 ואילך, אתם צריכים להשתמש במקום זאת בCPU Profiler כדי לבדוק קובצי .trace
שנוצרו על ידי הוספת קוד לאפליקציה באמצעות המחלקה Debug
, להקליט מעקב חדש אחר שיטות, לשמור קובצי .trace
ולבדוק את השימוש במעבד (CPU) בזמן אמת בתהליכים של האפליקציה.
Traceview הוא כלי שמספק ייצוגים גרפיים של יומני מעקב. אפשר ליצור את היומנים על ידי הוספת קוד עם המחלקה Debug
. שיטת המעקב הזו מדויקת מאוד כי אפשר לציין בדיוק איפה בקוד רוצים להתחיל ולהפסיק את רישום נתוני המעקב. אם עדיין לא יצרתם את יומני המעקב האלה ושמרתם אותם מהמכשיר המחובר במחשב המקומי, כדאי לעבור אל יצירת יומני מעקב באמצעות מכשור האפליקציה. בדיקת היומנים האלה באמצעות Traceview עוזרת לכם לנפות באגים באפליקציה ולנתח את הביצועים שלה.
טיפ: אפשר להשתמש ב-dmtracedump
משורת הפקודה כדי ליצור תרשימים גרפיים של ערימת הקריאות של קובצי יומן המעקב.
אם אתם לא צריכים לצפות ביומני מעקב שהקלטתם באמצעות מכשור האפליקציה עם המחלקה Debug
, אתם יכולים להשתמש בפרופילר של CPU שכלול ב-Android Studio מגרסה 3.0 ואילך כדי לבדוק את השרשורים של האפליקציה ולהקליט מעקב אחר שיטות.
פתיחת יומן מעקב באמצעות Traceview
כדי לפתוח יומן מעקב באמצעות Traceview מ-Android Studio, פועלים לפי השלבים הבאים:
- מפעילים את Android Device Monitor.
- ב-Android Device Monitor, בוחרים באפשרות File > Open File (קובץ > פתיחת קובץ).
- עוברים לקובץ
.trace
שרוצים לבדוק. - לוחצים על פתיחה.
הערה: אם אתם מנסים להציג את יומני המעקב של אפליקציה שנוצרה עם הפעלת צמצום קוד (כמו גרסת הפצה), יכול להיות שחלק מהשמות של השיטות והחברים יוסתרו. אפשר להשתמש בקובץ mapping.txt
ProGuard כדי לגלות את השמות המקוריים שלא עברו טשטוש.
מידע נוסף על הקובץ הזה זמין במאמר בנושא פענוח קוד מעורפל של דוח קריסות.
הערה: הוצאנו משימוש את האפשרות להריץ את הפקודה traceview
משורת הפקודה.
סקירה כללית של Traceview
אחרי שפותחים יומן מעקב, Traceview מציג את נתוני היומן בשני חלוניות:
- חלונית ציר זמן שמתארת מתי כל שרשור נכנס לשיטה ויוצא ממנה
- חלונית פרופיל שבה מוצג סיכום של ההרצה של כל שרשור במהלך התקופה שבה נוצר יומן המעקב
בקטעים הבאים מפורט מידע נוסף על חלוניות הפלט של traceview.
חלונית ציר הזמן
איור 1 מציג תצוגה מקרוב של חלונית ציר הזמן. הביצוע של כל שרשור מוצג בשורה משלו, וזמן הביצוע שחלף גדל ככל שמתקדמים שמאלה. כל שיטה מוצגת בצבע שונה. הקווים הדקים שמתחת לשורה הראשונה מציגים את הצאצאים (מהכניסה ועד היציאה) של השיטה שנבחרה.
איור 1. חלונית ציר הזמן של Traceview.
חלונית הפרופיל
כפי שמוצג באיור 2, בחלונית הפרופיל מופיעה רשימה של כל השיטות שהמערכת ביצעה במהלך התקופה שצוינה ביומן המעקב, וגם הזמן שהושקע בביצוע השיטות האלה. Method שקורא ל-Method אחר נקרא parent, ו-Methods ש-parent קורא להם נקראים children. כשלוחצים על שיטה כדי לבחור אותה, השיטה מציגה את ההורים ואת הילדים שלה בשני צמתים נפרדים.
בכל שיטה (צומת ברמה העליונה), הטבלה מציגה את הזמנים הכוללים והבלעדיים שלה (באלפיות השנייה), וגם את אחוז הזמן הכולל. זמן בלעדי הוא הזמן שנדרש להפעלת הקוד של השיטה עצמה, ואילו זמן כולל הוא הזמן שנדרש להפעלת הקוד של השיטה עצמה בתוספת הזמן שנדרש להפעלת הקוד של השיטות שמופעלות על ידה. מידע על התזמון מדווח גם במונחים של זמן מעבד וזמן אמת. זמן מעבד מתייחס רק לזמן שבו השרשור משתמש באופן פעיל בזמן המעבד, וזמן אמת מספק מידע על תזמון מוחלט מהרגע שבו האפליקציה נכנסת לשיטה ועד שהיא יוצאת מהשיטה הזו – בלי קשר לשאלה אם השרשור פעיל או במצב שינה.
בכל צומת ברמה העליונה בחלונית הפרופיל, בעמודה Calls + Rec, Calls/Total בטבלה (לא מוצגת באיור 2) מדווח מספר השיחות למתודה ומספר השיחות הרקורסיביות. לחלופין, בשיטות מסוג parent ו-child, בעמודה הזו מוצג מספר הקריאות שבהן השיטה הייתה צאצא או הורה של השיטה בצומת ברמה העליונה.
איור 2. חלונית הפרופיל של Traceview.
בעיות מוכרות ב-Traceview
רישום ביומן של Traceview לא מטפל בשרשורים בצורה טובה, ולכן מתרחשות הבעיות הבאות:
- אם השרשור יוצא במהלך יצירת הפרופיל, שם השרשור לא מועבר (הבעיה הזו נפתרה ב-Android 5.1 ואילך).
- המכונה הווירטואלית עושה שימוש חוזר במזהי השרשורים. אם שרשור מסתיים ומתחיל שרשור אחר, יכול להיות שיוקצה להם אותו מזהה.