אתם יכולים לתעד עקבות באמצעות Winscope לפיתוח מקומי ולניפוי באגים.
Winscope משתמש ב-adb, שתומך בחיבור המכשיר באמצעות USB או Wi-Fi.
המסך איסוף עקבות מוצג כשמריצים את Winscope.
חיבור המכשיר
אפשר לחבר מכשירים ב-Winscope באמצעות Winscope Proxy או Web Device Proxy.
כברירת מחדל, דף הבית של Winscope מציג את ממשק המשתמש של הגדרת החיבור ל-Winscope Proxy.
כדי להתחיל לתעד את הנתונים, בוחרים באחת מהשיטות הבאות לחיבור המכשיר.
שימו לב לאסימון שרת ה-proxy של Winscope שמוצג במסוף אחרי ההפעלה.
אחרי שמפעילים את שרת ה-proxy של Winscope ADB Connect, המסך משתנה באופן הבא. כדי ליצור את החיבור הראשוני לשרת ה-proxy, מזינים את אסימון ה-proxy של Winscope משלב 3 ולוחצים על Connect.
איור 3. איך מתעדים עקבות באמצעות שרת proxy למכשירי אינטרנט.
אם הדימון של שרת ה-proxy למכשירים באינטרנט לא מותקן במחשב, לוחצים על Install או מריצים את מרכז ההתקנות.
מאשרים את הגישה של המקור לשרת ה-proxy של מכשיר האינטרנט דרך תיבת הדו-שיח.
איור 4. נותנים הרשאה למקור.
צריך לאשר את הגישה לכל מכשיר חדש בפעם הראשונה שמתחברים אליו.
אם תיבת הדו-שיח לא מופיעה באופן אוטומטי, לוחצים על הסמל lock_open לצד המכשיר:
איור 5. מאשרים את המכשיר.
רכיבים מוליכים
כדי לאסוף את העקבות:
כשהמכשיר מחובר, כדי להתחיל את תהליך הצילום, בוחרים את היעדים ומגדירים את ההגדרות. לאחר מכן לוחצים על Start trace (התחלת המעקב) כדי להתחיל את הצילום:
איור 6. איסוף עקבות ב-Winscope.
כדי להפסיק את הצילום, לוחצים על סיום המעקב:
איור 7. מסתיימים את המעקב ב-Winscope.
אפשרויות מעקב
בקטע הזה מתוארות האפשרויות לכל סוג של מעקב.
הקלטת מסך
בעזרת Winscope אפשר להקליט את המסך של כמה צגים. בוחרים מסך מהתפריט כדי להקליט את המסך. אם לא תבחרו אפשרות, Winscope יתעדה את המסך הפעיל כברירת מחדל.
SurfaceFlinger
Buffer size:שינוי הגודל של מאגר הטבעות בזיכרון למעקב אחר SurfaceFlinger. מאגר נתונים זמניים גדול יותר מאפשר לאסוף יותר נתונים, אבל הוא מגביר את השימוש בזיכרון.
קלט: אם הממשק מכיל נתוני קלט, הוא עוקב אחרי הפרטים הספציפיים של חלון הקלט.
הרכב: מעקב אחרי סוג ההרכב והאזור הגלוי.
מטא-נתונים: מעקב אחר מטא-נתונים נוספים של פלטפורמה, כולל שכבות מחוץ למסך.
HWC: מעקב אחר מטא-נתונים נוספים של מלחין חומרה לא מובנה.
מעקב אחר מאגרי נתונים: הגדרת SurfaceFlinger למעקב אחרי כל השינויים במאגרים על פני השטח. כברירת מחדל, SurfaceFlinger מתעד מצב חדש רק כשהגיאומטריה משתנה.
תצוגות וירטואליות: כוללות שכבות של תצוגות וירטואליות במעקב.
WindowManager
Buffer size:שינוי הגודל של מאגר הטבעות בזיכרון למעקב אחר WindowManager. מאגר נתונים זמניים גדול יותר מאפשר לאסוף יותר נתונים, אבל הוא מגביר את השימוש בזיכרון.
Tracing type (סוג המעקב): מגדיר את אפשרויות התדירות לאיסוף המצבים:
frame: במצב הזה, WindowManager מאפס מצב אחד לכל פריים, כדי לוודא שרק מצבי WindowManager תקינים מתועדים. למצב הזה יש את תקורת הביצועים הנמוכה ביותר.
transaction: המצב הזה מתעד את המצב של WindowManager בכל פעם שמתבצעת התחייבות לעסקה. אפשר לבצע כמה טרנזקציות בתוך פריים, כך שאפשר לנפות באגים במצבים ביניים של WindowManager במהלך פריים. עם זאת, למצב הזה יש עלות תפעול גבוהה יותר בהשוואה למצב המסגרת.
רמת המעקב: קובעת את רמת הפירוט של מעקב WindowManager:
verbose: כולל את כל החלונות ואת פרטי ההגדרה של כל חלון. למצב הזה יש את תקורת הזיכרון והביצועים הגבוהה ביותר.
debug: כולל מידע על כל החלונות, אבל מתועד רק הגדרת החלון אם היא מכילה הגדרת שינוי מברירת המחדל המבוקשת.
critical: כולל את אותו מידע כמו במצב ניפוי באגים, אבל כולל רק חלונות גלויים. במצב הזה יש את תקורת הזיכרון והביצועים הקטנה ביותר.
Dumps
כדי ליצור תמונת מצב באמצעות Winscope, בקטע Collect Traces בדף הבית בוחרים בכרטיסייה Dump ואז לוחצים על Dump state:
איור 8. מצב Dump ב-Winscope.
הגדרת צילום מסך
Winscope מאפשרת לצלם צילום מסך של כמה מסכים. בוחרים תצוגה מהתפריט כדי לצלם את המסך. אם לא בוחרים אף מסך, צילום המסך יהיה של המסך הפעיל.
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-07-27 (שעון UTC).
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2025-07-27 (שעון UTC)."],[],[],null,["# Capture traces with Winscope\n\n[Run Winscope](/docs/core/graphics/winscope/run) locally or access it\nfrom a web server.\n\nYou can capture traces using Winscope for local development and debugging.\nWinscope uses [adb](https://developer.android.com/tools/adb), which supports\ndevice connection over USB or Wi-Fi.\n\nThe **Collect Traces** screen is displayed on launching Winscope.\n\nDevice connection\n-----------------\n\nYou can connect devices in Winscope using\n[Winscope Proxy](#winscope-proxy-setup)\nor\n[Web Device Proxy](#web-device-proxy-setup).\nBy default, the Winscope homepage shows the **Winscope Proxy** connection setup\nUI.\n\nTo start capturing traces, choose one of the following device connection\nmechanisms.\n\n### Winscope Proxy setup\n\nFollow these steps to set up Winscope Proxy:\n\n1. Under **Collect Traces** on the homepage, choose **Winscope Proxy** in the\n **Select connection type** drop-down:\n\n **Figure 1.** Capture traces using Winscope Proxy.\n2. Launch the Winscope ADB Connect proxy to capture traces directly from your\n browser, by running the following command:\n\n python3 $ANDROID_BUILD_TOP/development/tools/winscope/src/adb/winscope_proxy.py\n\n | **Note:** Python 3.10+ and adb are required.\n3. Note the Winscope proxy token displayed on the terminal after execution.\n\n4. After you launch the Winscope ADB Connect proxy, the screen changes as\n follows. To establish the initial connection to the proxy, input the\n Winscope proxy token from step 3 and click **Connect**.\n\n **Figure 2.** Connect to Winscope Proxy.\n\n### Web Device Proxy setup\n\nFollow these steps to set up Web Device Proxy:\n\n1. Under **Collect Traces** on the homepage, choose **Web Device Proxy** in the\n **Select connection type** drop-down:\n\n **Figure 3.** Capture traces using Web Device Proxy.\n2. If you don't have the Web Device Proxy daemon on your machine, click\n **Install** or run the\n [installer](https://tools.google.com/dlpage/android_web_device_proxy).\n\n | **Note:** Web Device Proxy is not yet supported on Mac.\n3. Approve origin access to Web Device Proxy through the dialog.\n\n **Figure 4.** Authorize origin.\n4. Approve access for each new device the first time you connect to the device.\n If the dialog does not automatically appear, click the `lock_open` icon next\n to the device:\n\n **Figure 5.** Authorize device.\n\nTraces\n------\n\nFollow these steps to collect traces:\n\n1. When connected, to initiate the capture process, select the targets and\n configure the settings. Then click **Start trace** to begin the capture:\n\n **Figure 6.** Collect traces in Winscope.\n2. To stop the capture, click **End trace**:\n\n **Figure 7.** End trace in Winscope.\n\nTrace options\n-------------\n\nThis section describes the options for each trace type.\n\n### Screen recording\n\nWith Winscope, you can record the screen of multiple displays. Choose a display\nfrom the menu to screen record. If you don't make a selection, Winscope records\nthe active display by default.\n| **Note:** Multi-display selection is available only with adb `screenrecord` v1.4 and higher, that is builds from September 2024 on. Single display selection is available for any version earlier than that.\n\n### SurfaceFlinger\n\n- **Buffer size:** Adjusts the size of the in-memory ring buffer for the\n SurfaceFlinger trace. A larger buffer enables the collection of more data\n but increases memory usage.\n\n | **Note:** Buffer size is deprecated starting in Android 15.\n- **Input:** If the surface contains input data, tracks the specifics of\n the input window.\n\n- **Composition:** Traces the composition type and visible region.\n\n- **Metadata:** Traces additional surface metadata, including offscreen\n layers.\n\n | **Warning:** Metadata is highly verbose and requires a large amount of memory.\n- **HWC:** Traces additional unstructured hardware composer metadata.\n\n | **Warning:** HWC is highly verbose and requires a large amount of memory.\n- **Trace buffers:** Configures SurfaceFlinger to trace all buffer changes on\n the surface. By default, SurfaceFlinger traces a new state only when the\n geometry is altered.\n\n- **Virtual displays:** Includes virtual display layers in the trace.\n\n### WindowManager\n\n- **Buffer size:** Adjusts the size of the in-memory ring buffer for the WindowManager trace. A larger buffer enables the collection of more data but increases memory usage.\n- **Tracing type:** Defines the frequency options for collecting states:\n\n - *frame:* In this mode, the WindowManager dumps a single state per frame, ensuring that only valid WindowManager states are captured. This mode has the lowest performance overhead.\n - *transaction:* This mode records a WindowManager state whenever a transaction is committed. You can commit multiple transactions within a frame, so this allows for debugging intermediate WindowManager states during a frame. However, this mode has a higher performance overhead compared to the frame mode.\n- **Tracing level:** Determines the verbosity of the WindowManager traces:\n\n - *verbose:* Includes all windows and configuration information for each window. This mode has the highest memory and performance overhead.\n - *debug:* Includes information about all windows, but logs only the window configuration if it contains a requested override configuration.\n - *critical:* Includes the same information as Debug mode, but includes only visible windows. This mode has the smallest memory and performance overhead.\n\nDumps\n-----\n\nTo take a state dump using Winscope, under **Collect Traces** on the homepage\nselect the **Dump** tab and then click **Dump state**:\n\n**Figure 8.** Dump state in Winscope.\n\n### Screenshot configuration\n\nWinscope allows taking a screenshot for multiple displays. Choose a display from\nthe menu to screenshot. If no selection is made, a screenshot is collected for\nthe active display."]]