Winscope הוא כלי אינטרנט המאפשר למשתמשים להקליט, להפעיל מחדש ולנתח את המצבים של מספר שירותי מערכת במהלך ואחרי אנימציות ומעברים. Winscope מתעד את כל מצבי שירות המערכת הרלוונטיים לקובץ מעקב. באמצעות ממשק המשתמש של Winscope עם קובץ המעקב, אתה יכול לבדוק את מצב השירותים הללו עבור כל פריים של אנימציה, עם או בלי הקלטת מסך, על ידי הפעלה חוזרת, צעדים וניפוי באגים במעברים.
שירותי המערכת שמייצרים עקבות שניתן לטעון לתוך Winscope הם כדלקמן:
- SurfaceFlinger
- WindowsManager
- WMShell
- IME
- מַשׁגֵר
הפעל את מציג המעקב של Winscope
מעקב Winscope הוא חלק מהשירותים בפלטפורמה. סעיף זה מתאר את השלבים הנדרשים להורדה, בנייה והפעלה של מציג המעקב של Winscope.
בצע את השלבים הבאים כדי להגדיר את המחשב שלך להפעלת ה-Winscope tracer:
- הורד את המקור לאנדרואיד .
נווט אל תיקיית Winscope:
cd development/tools/winscope
התקן תלות באמצעות:
npm install
כדי לראות רשימה של פקודות זמינות, הרץ:
npm run
בנה את כל יעדי הייצור והבדיקה באמצעות:
npm run build:prod
הפעל את Winscope באמצעות:
npm run start
לכידת עקבות
אתה יכול ללכוד עקבות במכשיר , דרך Winscope , או באמצעות פקודות Android Debug Bridge (adb) .
לכידת עקבות במכשיר
לכיד עקבות במכשיר כדי לאסוף נתונים בעת הגשת באגים לבעיות אנימציה. כל עקבות ממשק המשתמש מתועדות בשיטה זו, מכיוון שלא ניתן להתאים אישית את התצורה.
במכשיר האנדרואיד שלך:
- אפשר אפשרויות מפתחים .
- בחר מעקב אחר מערכת תחת אפשרויות מפתחים .
- הפעל איסוף עקבות Winscope .
- תחת שונות :
- הפעל צרף הקלטות לדוחות באגים .
- הפעל את אריח הצג הגדרות מהירות .
- נווט למקום שבו אתה צריך לשחזר את הבאג.
כדי להתחיל את הלכידה, פתח את ההגדרות המהירות ובחר הקלט מעקב :
איור 1. תפריט הגדרה מהירה עם Record Trace.
בצע רק את השלבים הדרושים כדי לשחזר את הבאג.
כדי לעצור את הלכידה, פתח את ההגדרות המהירות ובחר הפסק מעקב .
שתף את היומן שנלכד באמצעות אחת מהאפשרויות המפורטות, כגון Gmail, Drive או BetterBug.
לכידת עקבות דרך Winscope
אתה יכול ללכוד עקבות באמצעות Winscope לפיתוח מקומי וניפוי באגים. Winscope משתמש ב-adb , התומך בחיבור התקן דרך USB או Wi-Fi.
על Winscope:
במסך איסוף עקבות , לחץ על ADB Proxy :
איור 2. לכידת עקבות ב-Winscope.
הפעל את פרוקסי Winscope ADB Connect כדי ללכוד עקבות ישירות מהדפדפן שלך.
הפעל את הפקודה:
python3 $ANDROID_BUILD_TOP/development/tools/winscope/src/adb/winscope_proxy.py
כדי להתחיל את הלכידה, במסך איסוף עקבות בחר את המטרות והתצורה ולחץ על התחל מעקב :
איור 3. אסוף עקבות על Winscope.
כדי לעצור את הלכידה, לחץ על סיים מעקב :
איור 4. סיום מעקב על Winscope.
כשהכלי מעלה את העקבות לממשק המשתמש של Winscope, הודעות האחזור והניתוח של קבצי פרוטו מופיעות על המסך.
צור את ה-state dump באמצעות Winscope
כדי לקחת מצב dump באמצעות Winscope, במסך Collect Traces בחר בכרטיסייה Dump ולאחר מכן לחץ על Dump state :
איור 5. מצב dump על Winscope.
לכידת עקבות באמצעות פקודות adb
הפעל את adb root
לפני הפעלת פקודות adb shell
עבור כל אחת מהעקבות הבאות. בסוף המעקב, קובצי המעקב זמינים ב- /data/misc/wmtrace
. כדי להעתיק קובץ או ספרייה וספריות המשנה שלו מהתקן, ראה העתקת קבצים למכשיר וממנו . ראה adb למידע נוסף.
WindowManager עקבות
כדי ללכוד עקבות של WindowManager:
אפשר מעקב:
adb shell wm tracing start
השבת מעקב:
adb shell wm tracing stop
שמור נתוני רישום בקובץ בזמן הפעלת לכידת עקבות:
adb shell wm tracing save-for-bugreport
יומן מעקב פעם אחת לכל מסגרת:
adb shell wm tracing frame
רישום כל עסקה:
adb shell wm tracing transaction
הגדר את גודל היומן המרבי (ב-KB):
adb shell wm tracing size
מצב מעקב הדפסה:
adb shell wm tracing status
הגדר את רמת היומן
critical
(רק חלונות גלויים עם מידע מופחת),trim
(כל החלונות עם מידע מופחת), אוall
(כל החלונות והמידע):adb shell wm tracing level
פרוטולוג
הפקודות הבאות משמשות עבור מערכת ProtoLog .
בתהליך system_server
:
התחל פרוטולוג:
adb shell cmd window logging start
עצור פרוטולוג:
adb shell cmd window logging stop
אפשר ProtoLog עבור קבוצות יומן נתונות:
adb shell cmd window logging enable [group...]
השבת את ProtoLog עבור קבוצות יומן נתונות:
adb shell cmd window logging disable [group...]
אפשר רישום Logcat עבור קבוצות יומן נתונות:
adb shell cmd window logging enable-text [group...]
השבת רישום Logcat עבור קבוצות יומן נתונות:
adb shell cmd window logging disable-text [group...]
ב-WMShell:
התחל פרוטולוג:
adb shell dumpsys activity service SystemUIService WMShell
מעקב אחר מעבר
הפקודות הבאות משמשות למעקב אחר מעבר:
בתהליך system_server
:
התחל מעקב:
adb shell cmd window shell tracing start
עצור מעקב:
adb shell cmd window shell tracing stop
התחל מעקב ב-WMShell:
adb shell dumpsys activity service SystemUIService WMShell transitions tracing start
עצור מעקב ב-WMShell:
adb shell dumpsys activity service SystemUIService WMShell transitions tracing stop
עורך שיטות קלט
הפקודות הבאות משמשות למעקב אחר שיטת קלט (IME):
התחל מעקב IME עבור לקוחות שיטת קלט (IM), שירות שיטת קלט (IMS) ושירות ניהול שיטות קלט (IMMS):
adb shell ime tracing start
התחל לעקוב אחר לקוחות IME, IMS ו-IMMS:
adb shell ime tracing stop
שכבות SurfaceFlinger
מעקב אחר שכבת SurfaceFlinger משתמש ב-Perfetto trace ללכידה. ראה מעקב אחר תצורה למידע על תצורה.
ראה את הדוגמה הבאה של תצורה עבור מעקב אחר שכבות SurfaceFlinger:
unique_session_name: "surfaceflinger_layers_active"
buffers: {
size_kb: 63488
fill_policy: RING_BUFFER
}
data_sources: {
config {
name: "android.surfaceflinger.layers"
surfaceflinger_layers_config: {
mode: MODE_ACTIVE
trace_flags: TRACE_FLAG_INPUT
trace_flags: TRACE_FLAG_COMPOSITION
trace_flags: TRACE_FLAG_HWC
trace_flags: TRACE_FLAG_BUFFERS
trace_flags: TRACE_FLAG_VIRTUAL_DISPLAYS
}
}
}
ראה את הפקודה הבאה לדוגמה ליצירת מעקב עבור שכבות SurfaceFlinger:
adb shell -t perfetto \
-c - --txt \
-o /data/misc/perfetto-traces/trace \
עסקאות SurfaceFlinger
מעקב אחר עסקאות SurfaceFlinger משתמש ב-Perfetto Trace לצורך לכידה. ראה מעקב אחר תצורה למידע על תצורה.
ראה את הדוגמה הבאה של תצורת Perfetto עבור מעקב פעיל SurfaceFlinger:
unique_session_name: "surfaceflinger_transactions_active"
buffers: {
size_kb: 1024
fill_policy: RING_BUFFER
}
data_sources: {
config {
name: "android.surfaceflinger.transactions"
surfaceflinger_transactions_config: {
mode: MODE_ACTIVE
}
}
}
write_into_file: true
file_write_period_ms: 100
ראה את הדוגמה הבאה של תצורת Perfetto עבור מעקב רציף של SurfaceFlinger:
unique_session_name: "surfaceflinger_transactions_continuous"
buffers: {
size_kb: 1024
fill_policy: RING_BUFFER
}
data_sources: {
config {
name: "android.surfaceflinger.transactions"
surfaceflinger_transactions_config: {
mode: MODE_CONTINUOUS
}
}
}
ראה את הפקודה הבאה לדוגמה ליצירת מעקב עבור עסקאות SurfaceFlinger:
adb shell perfetto \
-c - --txt \
-o /data/misc/perfetto-traces/trace \
צור מצב dump באמצעות adb
Winscope קורא תמונת מצב של WindowManager ו-SurfaceFlinger מדיווחי באגים. דוחות הבאגים מאחסנים את המצבים כקבצי פרוטו נפרדים בתוך תיקיית proto
. כדי ליצור את ה-state dumps באמצעות adb, הפעל את הפקודות הבאות.
עבור WindowsManager:
adb exec-out dumpsys window --proto > window_dump.winscope
עבור SurfaceFlinger:
adb exec-out dumpsys SurfaceFlinger --proto > sf_dump.winscope
נתח עקבות
כדי לנפות באגים במצבים חולפים ובלתי חוקיים הגורמים לבעיות בהנפשה, Winscope צוברת קבצי מעקב שונים, מספקת חיפוש והדמיה על גבי מסגרות וקווי זמן, ומציגה הודעות protobuf בצורה קוהרנטית. ניתוח עקבות ב-Winscope עוזר לזהות את השכבה, המסגרת והמצב המדויק של התרחשות הבאג.
השתמש ב- Winscope
לאחר שתפסת עקבות , נתח את העקבות ב-Winscope:
העלה את העקבות השמורות שלך באמצעות הלוח בצד ימין. אתה יכול להסיר עקבות שהועלו או להעלות עקבות נוספות.
איור 6. העלה עקבות ב-Winscope.
לחץ על הצג עקבות כדי לראות את העקבות שהועלו. כרטיסיות עבור כל מעקב מופיעות בחלונית העליונה של החלון. אם הקובץ שהועלה מכיל את העקבות הרלוונטיות, תצוגה צפה של עקבות הקלטת המסך מונחת על המסך.
איור 7. הצג עקבות על Winscope.
השתמש בממשק המשתמש בחלונית העליונה ביותר של החלון כדי לשנות את השם והורד את המעקב שהעלית או להעלות אחד חדש.
נווט בין העקבות לאורך זמן באמצעות כלי מחוון הזמן בחלונית התחתונה של החלון. לניווט זמן נוסף, השתמש בתכונות הבאות, כפי שמוצג באיור 8:
- כדי לנווט לזמן או אירוע מסוים, השתמש בסמן (מחוון הזמן), או בשמאל ונכון חיצים בתיבת תצוגת הזמן (פינה השמאלית התחתונה), או חיצים שמאלה וימינה במקלדת.
- כדי להציג עקבות נבחרות מקודדות צבע על ציר הזמן, השתמש בתפריט הנפתח (משמאל למחוון הזמן). כברירת מחדל, שלושת העקבות האחרונות שנצפו באמצעות לשוניות המעקב מוצגות על ציר הזמן.
- לתצוגה מפורטת של כל העקבות שהועלו, השתמש בהתקרבות או התקרבות כלי (מתחת למחוון הזמן), או גלול במקלדת. השתמש בלחצן האיפוס כדי לאפס את רמת הזום.
- לתצוגה מורחבת של התפלגות העקבות לאורך זמן, לחץ על החץ למעלה (פינה ימנית תחתונה).
איור 8. ניווט בזמן ב-Winscope.
בתצוגה המורחבת (איור 9), בחר והגדל מסגרות זמן ספציפיות לבדיקה טובה יותר:
איור 9. ציר זמן מורחב ב-Winscope.
כדי לבחון עקבות, אתה יכול להציג את מצב המכשיר עם הקלטת המסך. כדי לבחון מעקב מסוים, לחץ על לשונית המעקב הרלוונטית בחלונית העליונה של הכלי.
עבור ה- Surface Flinger trace, שלושה לוחות מציגים תצוגות שונות של העקיבה בפרק זמן נתון, כפי שמוצג באיור 10:
איור 10. עקבות Flinger של פני השטח על Winscope.
תצוגת שכבות : תצוגת 3D של השכבות בשכבות-על מלבניות. רכיבי ממשק המשתמש הבאים מתאימים את המלבנים כדי להציג את האלמנטים הגרפיים במונחים של מיקומם, גודלם, טרנספורמציה וסדר z:
- מחוון הסיבוב (משמאל למעלה בתצוגת השכבות) מסובב את מלבני השכבות כדי להציג אותם בזוויות שנבחרו.
- מחוון הרווח (מימין למעלה בתצוגת השכבות) מתאים את המרווח בין השכבות כדי ליצור את התצוגה המרוכבת שנבחרה.
- כלי הזום (הימני העליון של תצוגת השכבות) מתקרבים ולהקטין לתוך השכבות לבדיקה טובה יותר.
- כפתור האיפוס (מימין למעלה בתצוגת השכבות) משחזר את הגדרות המצלמה לתצוגה המקורית.
- גרור את המלבנים כדי להקל על התקרבות טובה יותר.
תצוגת היררכיה : היררכיה מלאה של השכבות.
- גלוי בלבד (מימין למעלה בתצוגת ההיררכיה), כאשר נבחר, מסתיר שכבות בלתי נראות מההיררכיה כדי לעזור לדמיין את האלמנטים על המסך.
- שטוח (מימין למעלה בתצוגת ההיררכיה), כאשר נבחר, מציג את ההיררכיה כרשימה שטוחה של שכבות.
- הצג הבדל (משמאל למעלה בתצוגת ההיררכיה) נבחר רק כאשר יש מעבר מצב. כאשר נבחר, הכלי משווה את המצב הנוכחי מול המצב הקודם. אלמנט חדש מסומן בירוק, אלמנט שנמחק מסומן באדום ואלמנט שונה מסומן בכחול.
תצוגת מאפיינים : מאפייני השכבה שנבחרה. החלונית העליונה של תצוגת המאפיינים מכילה מידע על מאפייני מפתח בלבד, כגון נראות , גיאומטריה ומאגר . החלונית התחתונה של תצוגת המאפיינים מכילה Proto Dump של כל המאפיינים.
- תיבת הסימון הצג הבדל (משמאל למעלה בתצוגת המאפיינים) מתנהגת כמו בתצוגת ההיררכיה .
- הצג ברירות מחדל (שמאל למעלה בתצוגת המאפיינים), כאשר נבחר, מציג את ערכי הפרוטו המוגדרים כברירת מחדל ב-Proto Dump. כברירת מחדל, ערכים אלה אינם רשומים ב-Proto Dump. ערכי הפרוטו המוגדרים כברירת מחדל נלקחים מהגדרת שדה הפרוטו. אם לשדה פרוטו אין ערך ברירת מחדל שאינו ריק, ערכי הפרוטו המוגדרים כברירת מחדל הם:
- מחרוזות: ריק
- מספרים: 0
- ערכים בוליאניים: שקר
- חפצים: ריק
הבחירה בין שלוש התצוגות והקלטת המסך מסונכרנת, כלומר כל העקבות מתעדכנות באופן סינכרוני כאשר אתה מנווט לנקודת זמן אחרת. כדי לראות את המאפיינים של שכבה, בחר את השכבה על ידי לחיצה עליה בתצוגת ההיררכיה או על ידי לחיצה על המלבן המתאים בתצוגת המאפיינים. מלבן סגול מציין שעקבת תצוגה מחוברת לשכבה זו. בלחיצה כפולה על שכבה סגולה, ממשק המשתמש מנווט כדי לעבור לכרטיסיית מעקב התצוגה הרלוונטית.
עבור המעקב אחר מנהל החלונות , שלוש חלוניות מציגות תצוגות שונות של המעקב בפרק זמן נתון, כפי שמוצג באיור 11:
- תצוגת Windows : תצוגת 3D של השכבות.
- תצוגת היררכיה : היררכיה מלאה של השכבות.
- תצוגת מאפיינים מכילה פרוטו dump של כל המאפיינים.
הבחירה בין שלוש התצוגות והקלטת המסך מסונכרנת, כלומר כל העקבות מתעדכנות באופן סינכרוני כאשר אתה מנווט לנקודת זמן אחרת.
איור 11. מעקב אחר מנהל החלונות ב-Winscope.
עבור מעקבי עסקאות , העסקאות בין Surface Flinger ו-Windows Manager מוצגות בפורמט טבלה שניתן לחיפוש לפי המזהים, הסוג והטקסט המוצגים, יחד עם תצוגת מאפיינים המציגה את הפרוטו dump. הבחירה בין שתי התצוגות והקלטת המסך מסונכרנת:
איור 12. מעקב אחר עסקאות על Winscope.
עבור עקבות ProtoLog , המידע מוצג בפורמט טבלה, שניתן לחיפוש לפי תגים, קבצי מקור וטקסט:
איור 13. עקבות ProtoLog על Winscope.
עבור מעקבי מעברים , מוצגת רשימה של מעברים עם המזהה, הסוג, זמן השליחה, משך הזמן והסטטוס יחד עם המאפיינים של המעבר שנבחר:
איור 14. מעקב אחר מעברים על Winscope.