Google is committed to advancing racial equity for Black communities. See how.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Truy tìm cửa sổ chuyển tiếp

WinScope cung cấp cơ sở hạ tầng và các công cụ để ghi lại và phân tích các trạng thái WindowManager và SurfaceFlinger trong và sau khi chuyển đổi cửa sổ. WinScope ghi lại tất cả các trạng thái dịch vụ hệ thống thích hợp vào một tệp theo dõi, mà bạn có thể sử dụng để phát lại và chuyển qua các chuyển đổi.

Nắm bắt dấu vết

Ghi lại dấu vết thông qua Cài đặt nhanh hoặc adb trên các thiết bị chạy userdebug hoặc eng build.

Cài đặt nhanh

Để ghi lại dấu vết từ Cài đặt nhanh :

  1. Cho phép tùy chọn nhà phát triển .
  2. Chuyển đến Tùy chọn nhà phát triển > Cài đặt nhanh nhà phát triển .
  3. Kích hoạt theo dõi WinScope .
  4. Mở Cài đặt nhanh .
  5. Chạm vào Winscope Trace để bật theo dõi.
  6. Chạy chuyển tiếp cửa sổ trên thiết bị.
  7. Sau khi hoàn tất, hãy mở Cài đặt nhanh và chạm vào Dấu vết Winscope để tắt theo dõi.

Các dấu vết được ghi vào /data/misc/wmtrace/wm_trace.pb/data/misc/wmtrace/layers_trace.pb . Dấu vết cũng được bao gồm trong các báo cáo lỗi.

adb

Khi chụp dấu vết thông qua adb , hãy chụp riêng dấu vết WindowManager và SurfaceFlinger.

Dấu vết WindowManager

Để ghi lại dấu vết WindowManager:

  1. Cho phép theo dõi:
    adb shell cmd window tracing start
  2. Vô hiệu hóa dấu vết:
    adb shell cmd window tracing stop
  3. Lấy tệp theo dõi:
    adb pull /data/misc/wmtrace/wm_trace.pb wm_trace.pb

Bạn có thể tùy ý thay đổi cấu hình nhật ký mặc định của các cài đặt khác nhau cho dấu vết WindowManager:

  • Đặt tần suất nhật ký (cho giao dịch hoặc khung):
    adb shell cmd window tracing [ frame  |  transaction ]
  • Định cấu hình mức độ dài cho các mục nhật ký:
    adb shell cmd window tracing level [ all  |  trim  |  critical ]
  • Đặt kích thước bộ đệm tối đa (tính bằng KB):
    adb shell cmd window tracing size size-value 
  • Kết xuất trạng thái bộ đệm, mức ghi nhật ký, dung lượng còn lại và số phần tử:
    adb shell cmd window tracing status

Dấu vết SurfaceFlinger

Để ghi lại dấu vết của SurfaceFlinger:

  1. Cho phép theo dõi:
    adb shell su root service call SurfaceFlinger 1025 i32 1
  2. Vô hiệu hóa dấu vết:
    adb shell su root service call SurfaceFlinger 1025 i32 0
  3. Lấy tệp theo dõi:
    adb pull /data/misc/wmtrace/layers_trace.pb layers_trace.pb

Bạn có thể tùy ý thay đổi cấu hình nhật ký mặc định của các cài đặt khác nhau cho dấu vết SurfaceFlinger:

  • Đặt kích thước bộ đệm tối đa (tính bằng KB):
    adb shell su root service call SurfaceFlinger 1029 i32 size-value 
  • Định cấu hình mức độ dài cho các mục nhật ký:
    adb shell su root service call SurfaceFlinger 1033 i32 flags 

Tạo bãi rác nhà nước

WinScope đọc một ảnh chụp nhanh về trạng thái WindowManager và SurfaceFlinger từ các báo cáo lỗi. Các báo cáo lỗi lưu trữ các trạng thái dưới dạng các tệp proto riêng biệt trong thư mục proto . Để tạo các bãi chứa trạng thái bằng cách sử dụng adb , hãy chạy các lệnh sau.

Trình quản lý cửa sổ

adb exec-out dumpsys window --proto > window_dump.pb

SurfaceFlinger

adb exec-out dumpsys SurfaceFlinger --proto > sf_dump.pb

Phân tích dấu vết

Để phân tích tệp theo dõi, hãy sử dụng ứng dụng web WinScope. Xây dựng ứng dụng có thể từ nguồn hoặc mở nó từ thư mục dựng sẵn.

  1. Tải xuống các tạo phẩm dựng sẵn từ kho lưu trữ nguồn Android:
    curl 'https://android.googlesource.com/platform/prebuilts/misc/+/master/common/winscope/winscope.html?format=TEXT' | base64 -d > winscope.html
  2. Mở các tạo phẩm đã tải xuống trong trình duyệt web.
  3. Sau khi WinScope mở, chọn OPEN FILE để tải tệp theo dõi.

Sử dụng WinScope

Sau khi mở tệp theo dõi trong WinScope, bạn có thể phân tích dấu vết theo nhiều cách.

Ảnh chụp màn hình WinScope
Hình 1. Phân tích một dấu vết trong WinScope
  • Dòng thời gian - Hiển thị chuỗi các sự kiện trong theo dõi. Sử dụng các phím mũi tên hoặc nhấp vào từng mục để điều hướng qua dòng thời gian.
  • Màn hình - Cung cấp một đại diện trực quan của mọi cửa sổ hiển thị trên màn hình. Bấm vào một cửa sổ để chọn cửa sổ nguồn trong hệ thống phân cấp.
  • Phân cấp - Đại diện cho mỗi cửa sổ được biết đến với hệ thống. Một số cửa sổ không chứa bộ đệm, nhưng tồn tại để đặt chính sách cho trẻ em của cửa sổ. Các cửa sổ có thể nhìn thấy được đánh dấu bằng biểu tượng V
  • Thuộc tính - Hiển thị thông tin trạng thái cho mục đã chọn trong cấu trúc phân cấp.