Winscope — это веб-инструмент, который позволяет пользователям записывать, воспроизводить и анализировать состояния нескольких системных служб во время и после анимации и переходов. Winscope записывает все соответствующие состояния системных служб в файл трассировки. Используя пользовательский интерфейс Winscope с файлом трассировки, вы можете проверять состояние этих служб для каждого кадра анимации, с записью экрана или без нее, путем воспроизведения, пошагового выполнения и отладки переходов.
Системные службы, создающие трассировки, которые можно загрузить в Winscope, следующие:
- ПоверхностьФлингер
- Оконный менеджер
- WMShell
- IME
- пусковая установка
Запустите средство просмотра трассировки Winscope.
Трассировка Winscope является частью услуг платформы. В этом разделе описываются шаги, необходимые для загрузки, сборки и запуска средства просмотра трассировки Winscope.
Выполните следующие действия, чтобы настроить компьютер для запуска трассировщика Winscope:
- Загрузите исходный код Android .
Перейдите в папку Winscope:
cd development/tools/winscope
Установите зависимости, используя:
npm install
Чтобы просмотреть список доступных команд, запустите:
npm run
Создайте все производственные и тестовые цели, используя:
npm run build:prod
Запустите Winscope, используя:
npm run start
Захват следов
Вы можете захватывать трассировки на устройстве с помощью Winscope или команд Android Debug Bridge (adb) .
Зафиксируйте следы на устройстве
Сохраняйте следы на устройстве для сбора данных при регистрации ошибок, связанных с анимацией. Все трассировки пользовательского интерфейса записываются с помощью этого метода, поскольку конфигурацию нельзя настроить.
На вашем устройстве Android:
- Включите параметры разработчика .
- Выберите «Отслеживание системы» в разделе «Параметры разработчика» .
- Включите сбор трассировок Winscope .
- В разделе «Разное» :
- Включите Прикреплять записи к отчетам об ошибках .
- Включите «Показать плитку быстрых настроек» .
- Перейдите туда, где вам нужно воспроизвести ошибку.
Чтобы начать захват, откройте «Быстрые настройки» и выберите «Запись трассировки» :
Рис. 1. Меню быстрых настроек с функцией Record Trace.
Выполняйте только те шаги, которые необходимы для воспроизведения ошибки.
Чтобы остановить захват, откройте «Быстрые настройки» и выберите «Остановить отслеживание» .
Поделитесь записанным журналом, используя один из перечисленных вариантов, например Gmail, Drive или BetterBug.
Захват следов через Winscope
Вы можете захватывать трассировки с помощью Winscope для локальной разработки и отладки. Winscope использует adb , который поддерживает подключение устройств через USB или Wi-Fi.
В Винскопе:
На экране «Собрать следы » нажмите «Прокси-сервер ADB» :
Рисунок 2. Захват трассировок в Winscope.
Запустите прокси-сервер Winscope ADB Connect для захвата трассировок прямо из браузера.
Запустите команду:
python3 $ANDROID_BUILD_TOP/development/tools/winscope/src/adb/winscope_proxy.py
Чтобы начать захват, на экране «Сбор трассировок» выберите цели и конфигурацию и нажмите «Начать трассировку» :
Рисунок 3. Сбор трассировок в Winscope.
Чтобы остановить захват, нажмите «Завершить трассировку» :
Рисунок 4. Завершение трассировки в Winscope.
Когда инструмент загружает трассировки в пользовательский интерфейс Winscope, на экране появляются сообщения Fetching and Parsing Proto Files .
Создайте дамп состояния с помощью Winscope
Чтобы сделать дамп состояния с помощью Winscope, на экране «Сбор трассировок» выберите вкладку «Дамп» и нажмите «Дамп состояния» :
Рисунок 5. Состояние дампа в 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
Установите максимальный размер журнала (в КБ):
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...]
В WMSell:
Запускаем Протолог:
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. Информацию о конфигурации см. в разделе Конфигурация трассировки .
См. следующий пример конфигурации для трассировки слоев 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. Информацию о конфигурации см. в разделе Конфигурация трассировки .
См. следующий пример конфигурации 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 \
Создать дамп состояния с помощью adb
Winscope считывает снимки состояний WindowManager и SurfaceFlinger из отчетов об ошибках. В отчетах об ошибках состояния сохраняются в виде отдельных файлов прототипов в папке proto
. Чтобы сгенерировать дампы состояния с помощью adb, выполните следующие команды.
Для оконного менеджера:
adb exec-out dumpsys window --proto > window_dump.winscope
Для SurfaceFlinger:
adb exec-out dumpsys SurfaceFlinger --proto > sf_dump.winscope
Анализировать следы
Для отладки временных и недопустимых состояний, вызывающих проблемы с анимацией, Winscope объединяет различные файлы трассировки, обеспечивает поиск и визуализацию по кадрам и временным шкалам, а также представляет сообщения protobuf в согласованном виде. Анализ трассировок в Winscope помогает определить точный уровень, структуру и состояние возникновения ошибки.
Используйте Винскоп
После захвата трассировок проанализируйте их в Winscope:
Загрузите сохраненные трассировки, используя панель справа. Вы можете удалить загруженные трассировки или загрузить дополнительные трассировки.
Рисунок 6. Загрузка трассировок в Winscope.
Нажмите «Просмотреть трассировки», чтобы визуализировать загруженные трассировки. Вкладки для каждой трассы появляются на верхней панели окна. Если загруженный файл содержит соответствующие трассировки, на экран накладывается плавающее изображение трассировки записи экрана.
Рисунок 7. Просмотр трассировок в Winscope.
Используйте пользовательский интерфейс на самой верхней панели окна, чтобы переименовать и загрузите загруженную трассировку или загрузить новый.
Перемещайтесь по трассировкам во времени, используя ползунок времени на нижней панели окна. Для дополнительной навигации по времени используйте следующие функции, как показано на рисунке 8:
- Чтобы перейти к определенному времени или событию, используйте курсор (ползунок времени) или левую кнопку мыши. и правильно стрелки в поле отображения времени (левый нижний угол) или стрелки влево и вправо на клавиатуре.
- Чтобы отобразить выбранные кривые с цветовой кодировкой на временной шкале, используйте раскрывающееся меню (слева от ползунка времени). По умолчанию на временной шкале отображаются три последние трассы, просмотренные с помощью вкладок трассировок.
- Для детального просмотра всех загруженных трасс используйте увеличение масштаба. или уменьшить масштаб инструмент (под ползунком времени) или прокрутите клавиатуру. Используйте кнопку сброса, чтобы сбросить уровень масштабирования.
- Для расширенного представления распределения трасс во времени щелкните стрелку вверх. (правый нижний угол).
Рисунок 8. Навигация по времени в Winscope.
В расширенном представлении (рис. 9) выберите и увеличьте масштаб определенных временных интервалов для лучшего изучения:
Рисунок 9. Расширенная временная шкала в Winscope.
Для проверки следов можно просмотреть состояние устройства с помощью записи экрана. Чтобы изучить конкретную трассу, щелкните соответствующую вкладку трассировки на верхней панели инструмента.
Для трассы Surface Flinger три панели отображают разные виды трассы в заданный период времени, как показано на рисунке 10:
Рисунок 10. Трассировка Surface Flinger в Winscope.
Представление слоев : трехмерное представление слоев в виде прямоугольных наложений. Следующие элементы пользовательского интерфейса настраивают прямоугольники для отображения графических элементов с точки зрения их положения, размера, преобразования и z-порядка:
- Ползунок «Поворот» (слева вверху в представлении «Слои») поворачивает многослойные прямоугольники, чтобы просмотреть их под выбранными углами.
- Ползунок «Интервал» (вверху справа в представлении «Слои») регулирует расстояние между слоями для создания выбранного составного вида.
- Инструменты масштабирования (в правом верхнем углу представления «Слои») позволяют увеличить масштаб. и уменьшить масштаб в слои для лучшего контроля.
- Кнопка сброса (вверху справа от представления «Слои») восстанавливает исходные настройки камеры.
- Перетащите прямоугольники, чтобы облегчить масштабирование.
Представление иерархии : полная иерархия слоев.
- Только видимый (вверху справа от представления «Иерархия»), если этот флажок установлен, невидимые слои скрываются из иерархии, чтобы облегчить визуализацию элементов на экране.
- Плоский (вверху справа от представления «Иерархия»), если этот флажок установлен, иерархия отображается в виде плоского списка слоев.
- Показать разницу (вверху слева от представления иерархии) выбирается только при смене состояний. Если этот флажок установлен, инструмент сравнивает текущее состояние с предыдущим. Новый элемент выделяется зеленым цветом, удаленный элемент — красным, а измененный элемент — синим.
Просмотр свойств : свойства выбранного слоя. Верхняя панель представления «Свойства» содержит информацию только о ключевых свойствах, таких как «Видимость» , «Геометрия» и «Буфер» . Нижняя панель представления «Свойства» содержит протодамп всех свойств.
- Флажок «Показать разницу» (в левом верхнем углу представления «Свойства») ведет себя так же, как и в представлении «Иерархия» .
- Показывать значения по умолчанию (в левом верхнем углу представления «Свойства»), если этот флажок установлен, в дампе прототипа отображаются значения прототипа по умолчанию. По умолчанию эти значения не указаны в дампе прототипа. Значения прото по умолчанию берутся из определения поля прото. Если для поля прото не установлено значение по умолчанию, отличное от нуля, отображаются следующие значения прото по умолчанию:
- Строки: ноль
- Числа: 0
- Логические значения: Ложь
- Объекты: Нуль
Выбор между тремя представлениями и запись экрана синхронизированы, то есть все трассировки синхронно обновляются при переходе к другому моменту времени. Чтобы просмотреть свойства слоя, выберите слой, щелкнув его в представлении «Иерархия» или щелкнув соответствующий прямоугольник в представлении «Свойства». Фиолетовый прямоугольник указывает на то, что к этому слою прикреплена трассировка вида. При двойном щелчке по фиолетовому слою пользовательский интерфейс переходит на соответствующую вкладку трассировки представления.
Для трассы Диспетчера окон три панели отображают разные виды трассы в определенный период времени, как показано на рисунке 11:
- Вид Windows : 3D-вид слоев.
- Представление иерархии : полная иерархия слоев.
- Представление свойств содержит протодамп всех свойств.
Выбор между тремя представлениями и запись экрана синхронизированы, то есть все трассировки синхронно обновляются при переходе к другому моменту времени.
Рисунок 11. Трассировка оконного менеджера в Winscope.
Для трассировок транзакций транзакции между Surface Flinger и диспетчером окон представлены в формате таблицы, в которой возможен поиск по отображаемым идентификаторам, типу и тексту, а также представление свойств, в котором показан дамп прототипа. Выбор между двумя видами и запись экрана синхронизируются:
Рисунок 12. Трассировка транзакций в Winscope.
Для трассировок ProtoLog информация представлена в виде таблицы, в которой возможен поиск по тегам, исходным файлам и тексту:
Рисунок 13. Трассировка ProtoLog в Winscope.
Для трассировок переходов отображается список переходов с идентификатором, типом, временем отправки, продолжительностью и статусом, а также свойствами выбранного перехода:
Рисунок 14. Трассировка переходов в Winscope.
Winscope — это веб-инструмент, который позволяет пользователям записывать, воспроизводить и анализировать состояния нескольких системных служб во время и после анимации и переходов. Winscope записывает все соответствующие состояния системных служб в файл трассировки. Используя пользовательский интерфейс Winscope с файлом трассировки, вы можете проверять состояние этих служб для каждого кадра анимации, с записью экрана или без нее, путем воспроизведения, пошагового выполнения и отладки переходов.
Системные службы, создающие трассировки, которые можно загрузить в Winscope, следующие:
- ПоверхностьФлингер
- Оконный менеджер
- WMShell
- IME
- пусковая установка
Запустите программу просмотра трассировки Winscope.
Трассировка Winscope является частью услуг платформы. В этом разделе описываются шаги, необходимые для загрузки, сборки и запуска средства просмотра трассировки Winscope.
Выполните следующие действия, чтобы настроить компьютер для запуска трассировщика Winscope:
- Загрузите исходный код Android .
Перейдите в папку Winscope:
cd development/tools/winscope
Установите зависимости, используя:
npm install
Чтобы просмотреть список доступных команд, выполните:
npm run
Создайте все производственные и тестовые цели, используя:
npm run build:prod
Запустите Winscope, используя:
npm run start
Захват следов
Вы можете захватывать трассировки на устройстве с помощью Winscope или команд Android Debug Bridge (adb) .
Зафиксируйте следы на устройстве
Сохраняйте следы на устройстве для сбора данных при регистрации ошибок, связанных с анимацией. Все трассировки пользовательского интерфейса записываются с помощью этого метода, поскольку конфигурацию нельзя настроить.
На вашем устройстве Android:
- Включите параметры разработчика .
- Выберите «Отслеживание системы» в разделе «Параметры разработчика» .
- Включите сбор трассировок Winscope .
- В разделе «Разное» :
- Включите Прикреплять записи к отчетам об ошибках .
- Включите «Показать плитку быстрых настроек» .
- Перейдите туда, где вам нужно воспроизвести ошибку.
Чтобы начать захват, откройте «Быстрые настройки» и выберите «Запись трассировки» :
Рис. 1. Меню быстрых настроек с функцией Record Trace.
Выполняйте только те шаги, которые необходимы для воспроизведения ошибки.
Чтобы остановить захват, откройте «Быстрые настройки» и выберите «Остановить отслеживание» .
Поделитесь записанным журналом, используя один из перечисленных вариантов, например Gmail, Drive или BetterBug.
Захват следов через Winscope
Вы можете захватывать трассировки с помощью Winscope для локальной разработки и отладки. Winscope использует adb , который поддерживает подключение устройств через USB или Wi-Fi.
В Винскопе:
На экране «Собрать следы » нажмите «Прокси-сервер ADB» :
Рисунок 2. Захват трассировок в Winscope.
Запустите прокси-сервер Winscope ADB Connect для захвата трассировок прямо из браузера.
Запустите команду:
python3 $ANDROID_BUILD_TOP/development/tools/winscope/src/adb/winscope_proxy.py
Чтобы начать захват, на экране «Сбор трассировок» выберите цели и конфигурацию и нажмите «Начать трассировку» :
Рисунок 3. Сбор трассировок в Winscope.
Чтобы остановить захват, нажмите «Завершить трассировку» :
Рисунок 4. Завершение трассировки в Winscope.
Когда инструмент загружает трассировки в пользовательский интерфейс Winscope, на экране появляются сообщения Fetching and Parsing Proto Files .
Создайте дамп состояния с помощью Winscope
Чтобы сделать дамп состояния с помощью Winscope, на экране «Сбор трассировок» выберите вкладку «Дамп» и нажмите «Дамп состояния» :
Рисунок 5. Состояние дампа в 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
Установите максимальный размер журнала (в КБ):
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...]
В WMSell:
Запускаем Протолог:
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. Информацию о конфигурации см. в разделе Конфигурация трассировки .
См. следующий пример конфигурации для трассировки слоев 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. Информацию о конфигурации см. в разделе Конфигурация трассировки .
См. следующий пример конфигурации 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 \
Создать дамп состояния с помощью adb
Winscope считывает снимки состояний WindowManager и SurfaceFlinger из отчетов об ошибках. В отчетах об ошибках состояния сохраняются в виде отдельных файлов прототипов в папке proto
. Чтобы создать дампы состояния с помощью adb, выполните следующие команды.
Для оконного менеджера:
adb exec-out dumpsys window --proto > window_dump.winscope
Для SurfaceFlinger:
adb exec-out dumpsys SurfaceFlinger --proto > sf_dump.winscope
Анализировать следы
Для отладки переходных и недопустимых состояний, вызывающих проблемы с анимацией, Winscope объединяет различные файлы трассировки, обеспечивает поиск и визуализацию по кадрам и временным шкалам, а также представляет сообщения protobuf в согласованном виде. Анализ трассировок в Winscope помогает определить точный уровень, структуру и состояние возникновения ошибки.
Используйте Винскоп
После захвата трассировок проанализируйте их в Winscope:
Загрузите сохраненные трассировки, используя панель справа. Вы можете удалить загруженные трассировки или загрузить дополнительные трассировки.
Рисунок 6. Загрузка трассировок в Winscope.
Нажмите «Просмотреть трассировки», чтобы визуализировать загруженные трассировки. Вкладки для каждой трассы появляются на верхней панели окна. Если загруженный файл содержит соответствующие трассировки, на экран накладывается плавающее изображение трассировки записи экрана.
Рисунок 7. Просмотр трассировок в Winscope.
Используйте пользовательский интерфейс на самой верхней панели окна, чтобы переименовать и загрузите загруженную трассировку или загрузить новый.
Перемещайтесь по трассировкам во времени, используя ползунок времени на нижней панели окна. Для дополнительной навигации по времени используйте следующие функции, как показано на рисунке 8:
- Чтобы перейти к определенному времени или событию, используйте курсор (ползунок времени) или левую кнопку мыши. и правильно стрелки в поле отображения времени (левый нижний угол) или стрелки влево и вправо на клавиатуре.
- Чтобы отобразить выбранные кривые с цветовой кодировкой на временной шкале, используйте раскрывающееся меню (слева от ползунка времени). По умолчанию на временной шкале отображаются три последние трассы, просмотренные с помощью вкладок трассировок.
- Для детального просмотра всех загруженных трасс используйте увеличение масштаба. или уменьшить масштаб инструмент (под ползунком времени) или прокрутите клавиатуру. Используйте кнопку сброса, чтобы сбросить уровень масштабирования.
- Для расширенного просмотра распределения трасс во времени щелкните стрелку вверх. (правый нижний угол).
Рисунок 8. Навигация по времени в Winscope.
В расширенном представлении (рис. 9) выберите и увеличьте масштаб определенных временных интервалов для лучшего изучения:
Рисунок 9. Расширенная временная шкала в Winscope.
Для проверки следов можно просмотреть состояние устройства с помощью записи экрана. Чтобы изучить конкретную трассу, щелкните соответствующую вкладку трассировки на верхней панели инструмента.
Для трассы Surface Flinger три панели отображают разные виды трассы в заданный период времени, как показано на рисунке 10:
Рисунок 10. Трассировка Surface Flinger в Winscope.
Представление слоев : трехмерное представление слоев в виде прямоугольных наложений. Следующие элементы пользовательского интерфейса настраивают прямоугольники для отображения графических элементов с точки зрения их положения, размера, преобразования и z-порядка:
- Ползунок «Поворот» (слева вверху в представлении «Слои») поворачивает многослойные прямоугольники, чтобы просмотреть их под выбранными углами.
- Ползунок «Интервал» (вверху справа в представлении «Слои») регулирует расстояние между слоями для создания выбранного составного вида.
- Инструменты масштабирования (вверху справа в представлении «Слои») позволяют увеличить масштаб. и уменьшить масштаб в слои для лучшего контроля.
- Кнопка сброса (вверху справа от представления «Слои») восстанавливает исходные настройки камеры.
- Перетащите прямоугольники, чтобы облегчить масштабирование.
Представление иерархии : полная иерархия слоев.
- Только видимый (вверху справа от представления «Иерархия»), если этот флажок установлен, невидимые слои скрываются из иерархии, чтобы облегчить визуализацию элементов на экране.
- Плоский (вверху справа от представления «Иерархия»), если этот флажок установлен, иерархия отображается в виде плоского списка слоев.
- Показать разницу (вверху слева от представления иерархии) выбирается только при смене состояний. Если этот флажок установлен, инструмент сравнивает текущее состояние с предыдущим. Новый элемент выделяется зеленым цветом, удаленный элемент — красным, а измененный элемент — синим.
Просмотр свойств : свойства выбранного слоя. Верхняя панель представления «Свойства» содержит информацию только о ключевых свойствах, таких как «Видимость» , «Геометрия» и «Буфер» . Нижняя панель представления «Свойства» содержит протодамп всех свойств.
- Флажок «Показать разницу» (в левом верхнем углу представления «Свойства») ведет себя так же, как и в представлении «Иерархия» .
- Показывать значения по умолчанию (в левом верхнем углу представления «Свойства»), если этот флажок установлен, в дампе прототипа отображаются значения прототипа по умолчанию. По умолчанию эти значения не указаны в дампе прототипа. Значения прото по умолчанию берутся из определения поля прото. Если для поля прото не установлено значение по умолчанию, отличное от нуля, отображаются следующие значения прото по умолчанию:
- Строки: ноль
- Числа: 0
- Логические значения: Ложь
- Объекты: Нуль
Выбор между тремя представлениями и запись экрана синхронизированы, то есть все трассировки синхронно обновляются при переходе к другому моменту времени. Чтобы просмотреть свойства слоя, выберите слой, щелкнув его в представлении «Иерархия» или щелкнув соответствующий прямоугольник в представлении «Свойства». Фиолетовый прямоугольник указывает на то, что к этому слою прикреплена трассировка вида. При двойном щелчке по фиолетовому слою пользовательский интерфейс переходит на соответствующую вкладку трассировки представления.
Для трассы Диспетчера окон три панели отображают разные виды трассы в определенный период времени, как показано на рисунке 11:
- Вид Windows : трехмерное представление слоев.
- Представление иерархии : полная иерархия слоев.
- Представление свойств содержит протодамп всех свойств.
Выбор между тремя представлениями и запись экрана синхронизированы, то есть все трассировки синхронно обновляются при переходе к другому моменту времени.
Рисунок 11. Трассировка оконного менеджера в Winscope.
Для трассировок транзакций транзакции между Surface Flinger и диспетчером окон представлены в формате таблицы, в которой возможен поиск по отображаемым идентификаторам, типу и тексту, а также представление свойств, в котором показан дамп прототипа. Выбор между двумя видами и запись экрана синхронизируются:
Рисунок 12. Трассировка транзакций в Winscope.
Для трассировок ProtoLog информация представлена в виде таблицы, в которой возможен поиск по тегам, исходным файлам и тексту:
Рисунок 13. Трассировка ProtoLog в Winscope.
Для трассировок переходов отображается список переходов с идентификатором, типом, временем отправки, продолжительностью и статусом, а также свойствами выбранного перехода:
Рисунок 14. Трассировка переходов в Winscope.