Gunakan SQL untuk menemukan status tertentu dalam rekaman aktivitas Perfetto Winscope. Gunakan penampil Penelusuran global di UI Winscope untuk menjalankan kueri dan memvisualisasikan hasil tabel:
Gambar 1. Tab Penelusuran penonton.
Penampil Penelusuran memungkinkan Anda menulis dan menjalankan kueri SQL kustom pada rekaman aktivitas Perfetto, serta mengakses kueri terbaru dan tersimpan. Winscope menyediakan tampilan SQL khusus untuk membantu menelusuri rekaman aktivitas SurfaceFlinger dan Transaksi.
Gunakan konvensi berikut untuk semua tampilan:
Untuk kolom
property
danflat_property
:- Nama properti menggunakan snake case, misalnya
visible_region
dariLayerProto
. Notasi titik digunakan untuk mewakili properti bertingkat, misalnya,
visible_region.rect
.Kolom berulang di
property
dibedakan dengan tanda kurung siku:Misalnya, dalam dua instance kolom berulang
visible_region.rect
, kolomtop
direpresentasikan olehvisible_region.rect[0].top
danvisible_region.rect[1].top
.Kolom berulang di
flat_property
tidak dapat dibedakan:Misalnya, dalam dua instance kolom berulang
visible_region.rect
, kolomtop
direpresentasikan olehvisible_region.rect.top
di kedua instance.
- Nama properti menggunakan snake case, misalnya
Untuk kolom
value
danprevious_value
:- Nilai boolean direpresentasikan oleh
'0'
(False
) atau'1'
(True
).
- Nilai boolean direpresentasikan oleh
Tampilan SQL SurfaceFlinger
Data proto SurfaceFlinger menggunakan format berikut:
Data lapisan dalam format
LayerProto
.Data root hierarki dalam format
LayersSnapshotProto
.
Untuk menelusuri data lapisan, gunakan tampilan sf_layer_search
. Tampilan ini mencakup kolom
berikut:
Kolom | Deskripsi |
---|---|
state_id |
ID unik entri yang menjadi bagian dari lapisan |
ts |
Stempel waktu entri tempat lapisan berada |
layer_id |
ID lapisan |
parent_id |
ID lapisan induk |
layer_name |
Nama lapisan |
property |
Nama properti yang memperhitungkan kolom berulang |
flat_property |
Nama properti tidak memperhitungkan kolom berulang |
value |
Nilai properti dalam format string |
previous_value |
Nilai properti dari entri sebelumnya dalam format string |
Untuk menelusuri data root hierarki, gunakan tampilan sf_hierarchy_root_search
. Tampilan
ini menyertakan kolom berikut:
Kolom | Deskripsi |
---|---|
state_id |
ID unik entri |
ts |
Stempel waktu entri |
property |
Nama properti yang memperhitungkan kolom berulang |
flat_property |
Nama properti tidak memperhitungkan kolom berulang |
value |
Nilai properti dalam format string |
previous_value |
Nilai properti dari entri sebelumnya dalam format string |
Contoh kueri
Temukan semua frame tempat lapisan
IME
memiliki batas layar yang valid:SELECT ts, value, previous_value FROM sf_layer_search WHERE layer_name like 'IME%' AND property='screen_bounds.bottom' AND value<='24000'
Temukan semua frame tempat lapisan
Taskbar
color.a
(alpha) berubah:SELECT ts, value, previous_value FROM sf_layer_search WHERE layer_name like 'Taskbar%' AND property='color.a' AND value!=previous_value
Temukan semua frame dengan batas bawah
Wallpaper
kurang dari atau sama dengan 2400:SELECT ts, value, previous_value FROM sf_layer_search WHERE layer_name LIKE 'Wallpaper%' AND property='bounds.bottom' AND cast_int!(value) <= 2400
Cantumkan semua properti untuk layar dengan stack lapisan yang valid:
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, ']') ), '%' )
Tampilan SQL transaksi
Data proto transaksi menggunakan format
TransactionTraceEntry
.
Untuk menelusuri data transaksi, gunakan tampilan transactions_search
. Tampilan ini
menyertakan kolom berikut:
Kolom | Deskripsi |
---|---|
state_id |
ID unik entri yang menjadi milik properti proto |
ts |
Stempel waktu entri yang menjadi milik properti proto |
transaction_id |
ID Transaksi jika tersedia |
property |
Nama properti yang memperhitungkan kolom berulang |
flat_property |
Nama properti tidak memperhitungkan kolom berulang |
value |
Nilai properti dalam format string |
Contoh kueri
Temukan frame tempat transaksi diterapkan untuk mengubah posisi x lapisan menjadi -54.0:
SELECT ts, transaction_id, value FROM transactions_search WHERE flat_property='transactions.layer_changes.x' AND value='-54.0'
Temukan frame tempat lapisan
ImeContainer
ditambahkan:SELECT ts FROM transactions_search WHERE flat_property='added_layers.name' AND value='ImeContainer'
Tampilan SQL transisi
Data proto transisi menggunakan format
ShellTransition
.
Untuk menelusuri data transisi, gunakan tampilan transitions_search
. Tampilan ini
menyertakan kolom berikut:
Kolom | Deskripsi |
---|---|
ts |
Waktu pengiriman - kembali ke waktu pengiriman jika tersedia, jika tidak 0 |
transition_id |
ID transisi |
property |
Nama properti yang memperhitungkan kolom berulang |
flat_property |
Nama properti tidak memperhitungkan kolom berulang |
value |
Nilai properti dalam format string |
Contoh kueri
Temukan properti transisi yang ditangani oleh DefaultMixedHandler
:
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
Tampilan SQL ViewCapture
Data proto ViewCapture menggunakan format
View
.
Untuk menelusuri data ViewCapture, gunakan tampilan viewcapture_search
. Tampilan ini
menyertakan kolom berikut:
Kolom | Deskripsi |
---|---|
state_id |
ID unik status yang menjadi bagian dari tampilan |
ts |
Stempel waktu status yang dimiliki tampilan |
package_name |
Nama paket |
window_name |
Nama jendela |
class_name |
Melihat nama kelas |
property |
Nama properti yang memperhitungkan kolom berulang |
flat_property |
Nama properti tidak memperhitungkan kolom berulang |
value |
Nilai properti dalam format string |
previous_value |
Nilai properti dari status sebelumnya dalam format string |
Contoh kueri
Temukan semua status saat SearchContainerView
dipindahkan ke arah y:
SELECT * FROM viewcapture_search
WHERE class_name LIKE '%SearchContainerView'
AND flat_property='translation_y'
AND value!=previous_value
Tabel SQL ProtoLog
Data proto ProtoLog menggunakan format
ProtoLogMessage
. Tampilan ini mencakup kolom berikut:
Kolom | Deskripsi |
---|---|
ts |
Stempel waktu log |
level |
Level log |
tag |
Mencatat tag grup |
message |
Pesan log |
stacktrace |
Stacktrace (jika tersedia) |
location |
Lokasi kode tempat pesan berasal |
Contoh kueri
Temukan semua log dengan pesan yang berisi
transition
:SELECT ts, message, location FROM protolog WHERE message LIKE '%transition%'
Temukan semua log yang berisi ID transaksi yang valid:
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, '%');
Menjalankan kueri
Saat Anda menggunakan panel kiri, penelusuran rekaman aktivitas akan dimulai. Proses ini memerlukan waktu beberapa detik. Saat dimulai, linimasa tidak tersedia.
Setelah penelusuran rekaman aktivitas diinisialisasi, tulis kueri di kotak penelusuran, lalu klik Jalankan Kueri Penelusuran atau tekan Enter pada keyboard untuk menjalankannya.
Setelah selesai, tabel hasil akan ditampilkan di panel tengah. Kueri Anda akan muncul di bawah kotak penelusuran, dengan kolom untuk menyimpan kueri di antara sesi.
Anda dapat mengakses kueri tersimpan dengan mengklik tab Tersimpan di panel kiri, dan mengakses kueri yang baru saja dijalankan dengan mengklik tab Terbaru:
Gambar 2. Panel kiri penampil penelusuran.
Hasil
Semua kueri menampilkan hasil dalam tabel, yang ditampilkan dalam tampilan yang dapat di-scroll dengan perilaku interaktif yang mirip dengan penampil rekaman aktivitas berbasis log, seperti Transaksi dan ProtoLog:
Gambar 3. Hasil penampil penelusuran.
Jika tabel yang dihasilkan berisi kolom ts
, nilai dalam kolom tersebut akan ditafsirkan sebagai stempel waktu dan ditambahkan ke overlay linimasa sebagai baris entri baru. Klik baris ini dan gunakan tombol panah kiri dan kanan untuk beralih
antar-entri:
Gambar 4. Linimasa penelusuran.