使用 Winscope 捕获跟踪记录

您可在本地运行 Winscope 或通过 Web 服务器访问它。

您可以使用 Winscope 捕获跟踪记录以进行本地开发和调试。Winscope 使用 adb,后者支持通过 USB 或 Wi-Fi 连接设备。

启动 Winscope 后,系统会显示 Collect Traces 界面。

设备连接

您可在 Winscope 中使用 Winscope ProxyWeb Device Proxy 连接设备。默认情况下,Winscope 首页会显示 Winscope Proxy 连接设置界面。

如需开始捕获跟踪记录,请选择以下设备连接机制之一。

Winscope Proxy 设置

请按照以下步骤设置 Winscope Proxy:

  1. 在首页的 Collect Traces 下,从 Select connection type 下拉菜单中选择 Winscope Proxy

    使用 Winscope Proxy 捕获跟踪记录

    图 1. 使用 Winscope Proxy 捕获跟踪记录。

  2. 通过运行以下命令,启动 Winscope ADB Connect 代理,以直接从浏览器中捕获跟踪记录:

    python3 $ANDROID_BUILD_TOP/development/tools/winscope/src/adb/winscope_proxy.py
    
  3. 请记下执行后终端上显示的 Winscope Proxy 令牌。

  4. 启动 Winscope ADB Connect 代理后,界面会发生如下变化。如需与代理建立初始连接,请输入第 3 步中的 Winscope Proxy 令牌,然后点击 Connect

    连接到 Winscope Proxy

    图 2. 连接到 Winscope Proxy。

Web Device Proxy 设置

请按照以下步骤设置 Web Device Proxy:

  1. 在首页的 Collect Traces 下,从 Select connection type 下拉菜单中选择 Web Device Proxy

    使用 Web Device Proxy 捕获跟踪记录

    图 3. 使用 Web Device Proxy 捕获跟踪记录。

  2. 如果您的计算机上没有 Web Device Proxy 守护程序,请点击安装或运行安装程序

  3. 通过对话框向源设备授予 Web Device Proxy 访问权限。

    向源设备授予 WDP 访问权限

    图 4. 向源设备授权。

  4. 在首次连接到新设备时,批准该设备的访问权限。如果对话框未自动显示,请点击设备旁边的 lock_open 图标:

    wdp_unauth_device

    图 5. 向当前设备授权。

跟踪记录

请按照以下步骤收集跟踪记录:

  1. 连接后,如需启动捕获过程,请选择目标并配置设置。然后点击 Start trace 以开始捕获:

    在 Winscope 中收集跟踪记录

    图 6. 在 Winscope 中收集跟踪记录。

  2. 如需停止捕获,请点击 End trace(结束跟踪记录):

    在 Winscope 中结束跟踪

    图 7. 在 Winscope 中结束跟踪。

跟踪记录选项

本部分介绍了每种跟踪记录类型的选项。

屏幕录制

借助 Winscope,您可以录制多个显示屏的屏幕。从菜单中选择要录制屏幕的显示屏。如果您未做选择,Winscope 会默认录制处于活跃状态的显示屏。

SurfaceFlinger

  • Buffer size:调整 SurfaceFlinger 跟踪的内存中环形缓冲区的大小。缓冲区越大,可收集的数据就越多,但内存用量也会随之增加。

  • Input:如果 Surface 包含输入数据,则跟踪输入窗口的具体信息。

  • Composition:跟踪组合类型和可见区域。

  • Metadata:跟踪其他 Surface 元数据,包括屏幕外的层。

  • HWC:跟踪其他非结构化硬件混合渲染器元数据。

  • Trace buffers:配置 SurfaceFlinger 以跟踪 Surface 上的所有缓冲区更改。默认情况下,SurfaceFlinger 仅在几何图形发生更改时跟踪新状态。

  • Virtual displays:在跟踪记录中包含虚拟显示屏层。

WindowManager

  • Buffer size:调整 WindowManager 跟踪记录的内存中环形缓冲区的大小。缓冲区越大,可收集的数据就越多,但内存用量也会随之增加。
  • Tracing type:定义用于收集状态的频率选项:

    • frame:在此模式下,WindowManager 会在每帧中转储单个状态,以确保仅捕获有效的 WindowManager 状态。此模式的性能开销最低。
    • transaction:每当提交事务时,此模式都会记录 WindowManager 状态。您可在一个帧内提交多个事务,因此可在一个帧期间调试中间 WindowManager 状态。不过,与 frame 模式相比,此模式的性能开销更高。
  • Tracing level:确定 WindowManager 跟踪记录的详细程度:

    • verbose:包含每个窗口的所有窗口和配置信息。此模式的内存和性能开销最高。
    • debug:包含有关所有窗口的信息,但仅在窗口配置包含请求的替换配置时才会记录该配置。
    • critical:包含与调试模式相同的信息,但仅包含可见窗口。此模式的内存和性能开销最低。

转储

如需使用 Winscope 进行状态转储,请在首页的 Collect Traces 下选择 Dump 标签页,然后点击 Dump state

在 Winscope 中转储状态

图 8. 在 Winscope 中转储状态。

屏幕截图配置

Winscope 可让您截取多个显示屏的屏幕截图。从菜单中选择要截屏的显示屏。如果未进行选择,系统会针对处于活跃状态的显示屏收集屏幕截图。