Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release вместо aosp-main для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Вы можете захватывать трассировки с помощью Winscope для локальной разработки и отладки. Winscope использует adb , который поддерживает подключение устройств через USB или Wi-Fi.
При запуске Winscope отображается экран сбора трассировок .
Подключение устройства
Вы можете подключать устройства в Winscope с помощью Winscope Proxy или Web Device Proxy . По умолчанию домашняя страница Winscope отображает пользовательский интерфейс настройки подключения Winscope Proxy .
Чтобы начать сбор трассировок, выберите один из следующих механизмов подключения устройств.
Настройка Winscope Proxy
Для настройки Winscope Proxy выполните следующие действия:
В разделе «Собрать трассировки» на главной странице выберите «Winscope Proxy» в раскрывающемся списке «Выбрать тип подключения» :
Рисунок 1. Захват трассировок с помощью Winscope Proxy.
Запустите прокси-сервер Winscope ADB Connect для захвата трассировок непосредственно из браузера, выполнив следующую команду:
Обратите внимание на токен прокси-сервера Winscope, отображаемый на терминале после выполнения.
После запуска прокси-сервера Winscope ADB Connect экран изменится следующим образом. Чтобы установить начальное подключение к прокси-серверу, введите токен прокси-сервера Winscope из шага 3 и нажмите « Подключиться» .
Рисунок 2. Подключение к Winscope Proxy.
Настройка прокси-сервера веб-устройства
Чтобы настроить прокси-сервер веб-устройства, выполните следующие действия:
В разделе «Собрать трассировки» на главной странице выберите «Прокси-сервер веб-устройства» в раскрывающемся списке «Выбрать тип подключения» :
Рисунок 3. Захват трассировок с помощью Web Device Proxy.
Если на вашем компьютере нет демона Web Device Proxy, нажмите «Установить» или запустите установщик .
Подтвердите исходный доступ к прокси-серверу веб-устройства через диалоговое окно.
Рисунок 4. Авторизация источника.
Одобряйте доступ для каждого нового устройства при первом подключении к устройству. Если диалоговое окно не появляется автоматически, щелкните значок lock_open рядом с устройством:
Рисунок 5. Авторизация устройства.
Следы
Для сбора следов выполните следующие действия:
При подключении, чтобы начать процесс захвата, выберите цели и настройте параметры. Затем нажмите Начать трассировку , чтобы начать захват:
Рисунок 6. Сбор трассировок в Winscope.
Чтобы остановить захват, нажмите «Завершить трассировку» :
Рисунок 7. Конечная трассировка в Winscope.
Параметры трассировки
В этом разделе описываются параметры для каждого типа трассировки.
Запись экрана
С помощью Winscope вы можете записывать экраны нескольких дисплеев. Выберите дисплей из меню для записи экрана. Если вы не сделаете выбор, Winscope по умолчанию запишет активный дисплей.
SurfaceFlinger
Размер буфера: Регулирует размер кольцевого буфера в памяти для трассировки SurfaceFlinger. Больший буфер позволяет собирать больше данных, но увеличивает использование памяти.
Входные данные: если поверхность содержит входные данные, отслеживает специфику окна ввода.
Композиция: отслеживает тип композиции и видимую область.
Метаданные: отслеживает дополнительные метаданные поверхности, включая внеэкранные слои.
HWC: отслеживает дополнительные неструктурированные метаданные аппаратного композитора.
Трассировка буферов: Настраивает SurfaceFlinger для отслеживания всех изменений буфера на поверхности. По умолчанию SurfaceFlinger отслеживает новое состояние только при изменении геометрии.
Виртуальные дисплеи: Включает в трассировку слои виртуального дисплея.
Менеджер окон
Размер буфера: Регулирует размер кольцевого буфера в памяти для трассировки WindowManager. Больший буфер позволяет собирать больше данных, но увеличивает использование памяти.
Тип трассировки: Определяет параметры частоты сбора состояний:
кадр: В этом режиме WindowManager выводит одно состояние на кадр, гарантируя, что будут захвачены только допустимые состояния WindowManager. Этот режим имеет самые низкие накладные расходы на производительность.
транзакция: этот режим записывает состояние WindowManager всякий раз, когда транзакция фиксируется. Вы можете фиксировать несколько транзакций в кадре, поэтому это позволяет отлаживать промежуточные состояния WindowManager во время кадра. Однако этот режим имеет более высокие накладные расходы производительности по сравнению с кадровым режимом.
Уровень трассировки: определяет уровень детализации трассировок WindowManager:
verbose: Включает все окна и информацию о конфигурации для каждого окна. Этот режим имеет самые высокие накладные расходы памяти и производительности.
отладка: включает информацию обо всех окнах, но регистрирует только конфигурацию окна, если она содержит запрошенную конфигурацию переопределения.
критический: включает ту же информацию, что и режим отладки, но включает только видимые окна. Этот режим имеет наименьшие затраты памяти и производительности.
Свалки
Чтобы сделать дамп состояния с помощью Winscope, в разделе «Собрать трассировки» на главной странице выберите вкладку «Дамп» , а затем нажмите «Сбросить состояние» :
Рисунок 8. Состояние дампа в Winscope.
Конфигурация скриншота
Winscope позволяет делать снимки экрана для нескольких дисплеев. Выберите дисплей из меню для создания снимка экрана. Если выбор не сделан, снимок экрана делается для активного дисплея.
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 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-29 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."]]