Tìm kiếm dấu vết

Sử dụng SQL để tìm các trạng thái cụ thể trong dấu vết Winscope Perfetto. Sử dụng trình xem Tìm kiếm toàn cục trong giao diện người dùng Winscope để chạy truy vấn và trực quan hoá kết quả được lập bảng:

thẻ trình xem tìm kiếm

Hình 1. Thẻ Trình xem tìm kiếm.

Trình xem Tìm kiếm cho phép bạn viết và chạy các truy vấn SQL tuỳ chỉnh trên dấu vết Perfetto, cũng như truy cập vào các truy vấn gần đây và đã lưu. Winscope cung cấp các chế độ xem SQL chuyên biệt để hỗ trợ việc tìm kiếm dấu vết SurfaceFlinger và Giao dịch.

Sử dụng các quy ước sau cho tất cả thành phần hiển thị:

  • Đối với cột propertyflat_property:

    • Tên thuộc tính được viết theo kiểu snake case, ví dụ: visible_region từ LayerProto.
    • Ký hiệu dấu chấm được dùng để biểu thị các thuộc tính lồng nhau, ví dụ: visible_region.rect.

    • Các trường lặp lại trong property được phân biệt bằng dấu ngoặc vuông:

      Ví dụ: trong hai thực thể của trường lặp lại visible_region.rect, trường top được biểu thị bằng visible_region.rect[0].topvisible_region.rect[1].top.

    • Không thể phân biệt các trường lặp lại trong flat_property:

      Ví dụ: trong hai thực thể của trường lặp lại visible_region.rect, trường top được biểu thị bằng visible_region.rect.top trong cả hai thực thể.

  • Đối với cột valueprevious_value:

    • Giá trị boolean được biểu thị bằng '0' (False) hoặc '1' (True).

Chế độ xem SQL SurfaceFlinger

Dữ liệu proto SurfaceFlinger sử dụng các định dạng sau:

Để tìm kiếm dữ liệu lớp, hãy sử dụng chế độ xem sf_layer_search. Chế độ xem này bao gồm các cột sau:

Cột Mô tả
state_id Mã nhận dạng duy nhất của mục nhập mà lớp thuộc về
ts Dấu thời gian của mục nhập mà lớp thuộc về
layer_id Mã lớp
parent_id Mã lớp của lớp mẹ
layer_name Tên lớp
property Tên tài sản tính đến các trường lặp lại
flat_property Tên cơ sở lưu trú không tính đến các trường lặp lại
value Giá trị thuộc tính ở định dạng chuỗi
previous_value Giá trị thuộc tính của mục nhập trước đó ở định dạng chuỗi

Để tìm kiếm dữ liệu gốc của hệ phân cấp, hãy sử dụng thành phần hiển thị sf_hierarchy_root_search. Chế độ xem này bao gồm các cột sau:

Cột Mô tả
state_id Mã nhận dạng duy nhất của mục nhập
ts Dấu thời gian của mục nhập
property Tên tài sản tính đến các trường lặp lại
flat_property Tên cơ sở lưu trú không tính đến các trường lặp lại
value Giá trị thuộc tính ở định dạng chuỗi
previous_value Giá trị thuộc tính của mục nhập trước đó ở định dạng chuỗi

Cụm từ tìm kiếm mẫu

  • Tìm tất cả các khung hình mà lớp IME có giới hạn màn hình hợp lệ:

    SELECT ts, value, previous_value FROM sf_layer_search
      WHERE layer_name like 'IME%'
      AND property='screen_bounds.bottom'
      AND value<='24000'
    
  • Tìm tất cả khung hình mà lớp Taskbar color.a (alpha) thay đổi:

    SELECT ts, value, previous_value FROM sf_layer_search
      WHERE layer_name like 'Taskbar%'
      AND property='color.a'
      AND value!=previous_value
    
  • Tìm tất cả khung hình có giới hạn dưới Wallpaper nhỏ hơn hoặc bằng 2400:

    SELECT ts, value, previous_value FROM sf_layer_search
      WHERE layer_name LIKE 'Wallpaper%'
      AND property='bounds.bottom'
      AND cast_int!(value) <= 2400
    
  • Liệt kê tất cả các thuộc tính cho màn hình có ngăn xếp lớp hợp lệ:

    SELECT STATE.* FROM sf_hierarchy_root_search STATE_WITH_DISPLAY_ON
    INNER JOIN sf_hierarchy_root_search STATE
      ON STATE.state_id = STATE_WITH_DISPLAY_ON.state_id
      AND STATE_WITH_DISPLAY_ON.flat_property='displays.layer_stack'
      AND STATE_WITH_DISPLAY_ON.value!='4294967295'
      AND STATE.property LIKE CONCAT(
        SUBSTRING(
            STATE_WITH_DISPLAY_ON.property,
            0,
            instr(STATE_WITH_DISPLAY_ON.property, ']')
        ),
        '%'
      )
    

Chế độ xem SQL của giao dịch

Dữ liệu giao dịch proto sử dụng định dạng TransactionTraceEntry.

Để tìm kiếm dữ liệu giao dịch, hãy sử dụng chế độ xem transactions_search. Chế độ xem này bao gồm các cột sau:

Cột Mô tả
state_id Mã nhận dạng duy nhất của mục nhập mà thuộc tính proto thuộc về
ts Dấu thời gian của mục mà thuộc tính proto thuộc về
transaction_id Mã giao dịch (nếu có)
property Tên tài sản tính đến các trường lặp lại
flat_property Tên cơ sở lưu trú không tính đến các trường lặp lại
value Giá trị thuộc tính ở định dạng chuỗi

Cụm từ tìm kiếm mẫu

  • Tìm khung hình mà giao dịch đã được áp dụng để thay đổi vị trí x của lớp thành -54.0:

    SELECT ts, transaction_id, value FROM transactions_search
      WHERE flat_property='transactions.layer_changes.x'
      AND value='-54.0'
    
  • Tìm khung đã thêm lớp ImeContainer:

    SELECT ts FROM transactions_search
      WHERE flat_property='added_layers.name'
      AND value='ImeContainer'
    

Chuyển đổi chế độ xem SQL

Dữ liệu proto chuyển đổi sử dụng định dạng ShellTransition.

Để tìm kiếm dữ liệu chuyển đổi, hãy sử dụng thành phần hiển thị transitions_search. Chế độ xem này bao gồm các cột sau:

Cột Mô tả
ts Thời gian gửi – quay lại thời gian gửi nếu có, nếu không thì là 0
transition_id Mã chuyển đổi
property Tên tài sản tính đến các trường lặp lại
flat_property Tên cơ sở lưu trú không tính đến các trường lặp lại
value Giá trị thuộc tính ở định dạng chuỗi

Cụm từ tìm kiếm mẫu

Tìm các thuộc tính của hiệu ứng chuyển đổi do DefaultMixedHandler xử lý:

  SELECT
    PROPS.ts,
    PROPS.transition_id,
    PROPS.property,
    PROPS.value
  FROM transitions_search HANDLER_MATCH
  INNER JOIN transitions_search PROPS
    ON HANDLER_MATCH.transition_id = PROPS.transition_id
  WHERE HANDLER_MATCH.property = 'handler'
    AND HANDLER_MATCH.value LIKE "%DefaultMixedHandler"
  ORDER BY PROPS.transition_id, PROPS.property

Chế độ xem SQL ViewCapture

Dữ liệu proto ViewCapture sử dụng định dạng View.

Để tìm kiếm dữ liệu ViewCapture, hãy sử dụng thành phần hiển thị viewcapture_search. Chế độ xem này bao gồm các cột sau:

Cột Mô tả
state_id Mã nhận dạng duy nhất của trạng thái mà thành phần hiển thị thuộc về
ts Dấu thời gian của trạng thái mà thành phần hiển thị thuộc về
package_name Tên gói
window_name Tên cửa sổ
class_name Xem tên lớp
property Tên tài sản tính đến các trường lặp lại
flat_property Tên cơ sở lưu trú không tính đến các trường lặp lại
value Giá trị thuộc tính ở định dạng chuỗi
previous_value Giá trị thuộc tính từ trạng thái trước đó ở định dạng chuỗi

Cụm từ tìm kiếm mẫu

Tìm tất cả trạng thái khi SearchContainerView di chuyển theo hướng y:

  SELECT * FROM viewcapture_search
  WHERE class_name LIKE '%SearchContainerView'
    AND flat_property='translation_y'
    AND value!=previous_value

Bảng SQL ProtoLog

Dữ liệu proto ProtoLog sử dụng định dạng ProtoLogMessage. Chế độ xem này bao gồm các cột sau:

Cột Mô tả
ts Dấu thời gian của nhật ký
level Cấp độ nhật ký
tag Ghi nhật ký thẻ nhóm
message Thông điệp nhật ký
stacktrace Dấu vết ngăn xếp (nếu có)
location Vị trí mã nơi bắt nguồn thông báo

Cụm từ tìm kiếm mẫu

  • Tìm tất cả nhật ký có thông báo chứa transition:

    SELECT ts, message, location FROM protolog
      WHERE message LIKE '%transition%'
    
  • Tìm tất cả nhật ký chứa mã giao dịch hợp lệ:

    CREATE PERFETTO VIEW valid_tx_ids AS
      SELECT DISTINCT transaction_id FROM transactions_search
      WHERE transaction_id IS NOT NULL AND transaction_id != '0';
    
    SELECT TRANS.transaction_id, message FROM valid_tx_ids TRANS
    INNER JOIN protolog LOGS
      ON LOGS.message LIKE CONCAT('%', TRANS.transaction_id, '%');
    

Chạy truy vấn

Khi bạn sử dụng bảng điều khiển bên trái, tính năng tìm kiếm dấu vết sẽ bắt đầu. Quá trình này sẽ mất vài giây. Trong khi quá trình này bắt đầu, bạn sẽ không thấy dòng thời gian.

Sau khi tìm kiếm dấu vết khởi chạy, hãy viết một truy vấn trong hộp tìm kiếm rồi nhấp vào Run Search Query (Chạy truy vấn tìm kiếm) hoặc nhấn phím Enter trên bàn phím để chạy truy vấn đó.

Khi hoàn tất, bảng kết quả sẽ xuất hiện trong bảng điều khiển ở giữa. Truy vấn của bạn sẽ xuất hiện bên dưới hộp tìm kiếm, cùng với một trường để lưu truy vấn giữa các phiên.

Bạn có thể truy cập vào các cụm từ tìm kiếm đã lưu bằng cách nhấp vào thẻ Đã lưu trong bảng điều khiển bên trái, đồng thời truy cập vào các cụm từ tìm kiếm đã chạy gần đây bằng cách nhấp vào thẻ Gần đây:

bảng điều khiển bên trái của trình xem tìm kiếm

Hình 2. Bảng điều khiển bên trái của trình xem tìm kiếm.

Kết quả

Tất cả truy vấn đều trả về kết quả được lập bảng, hiển thị trong chế độ xem cuộn được với hành vi tương tác tương tự như trình xem dấu vết dựa trên nhật ký, chẳng hạn như Giao dịch và ProtoLog:

kết quả của trình xem tìm kiếm

Hình 3. Kết quả trong trình xem tìm kiếm.

Nếu bảng kết quả chứa cột ts, thì các giá trị trong cột đó sẽ được diễn giải là dấu thời gian và được thêm vào lớp phủ tiến trình dưới dạng một hàng mới của các mục nhập. Nhấp vào hàng này và sử dụng phím mũi tên trái và phải để di chuyển giữa các mục nhập:

dòng thời gian tìm kiếm

Hình 4. Dòng thời gian tìm kiếm.