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:
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
property
vàflat_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ườngtop
được biểu thị bằngvisible_region.rect[0].top
vàvisible_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ườngtop
được biểu thị bằngvisible_region.rect.top
trong cả hai thực thể.
- Tên thuộc tính được viết theo kiểu snake case, ví dụ:
Đối với cột
value
vàprevious_value
:- Giá trị boolean được biểu thị bằng
'0'
(False
) hoặc'1'
(True
).
- Giá trị boolean được biểu thị bằng
Chế độ xem SQL SurfaceFlinger
Dữ liệu proto SurfaceFlinger sử dụng các định dạng sau:
Dữ liệu lớp ở định dạng
LayerProto
.Dữ liệu gốc của hệ phân cấp ở định dạng
LayersSnapshotProto
.
Để 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:
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:
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:
Hình 4. Dòng thời gian tìm kiếm.