Winscope Perfetto izlemelerinde belirli durumları bulmak için SQL'i kullanın. Sorgu çalıştırmak ve tablo halindeki sonuçları görselleştirmek için Winscope kullanıcı arayüzündeki genel Arama görüntüleyicisini kullanın:
Şekil 1. İzleyici arama sekmesi.
Arama görüntüleyici, Perfetto izlemelerinde özel SQL sorguları yazıp çalıştırmanıza ve son ve kayıtlı sorgulara erişmenize olanak tanır. Winscope, SurfaceFlinger ve İşlemler izlemelerini aramaya yardımcı olmak için özel SQL görünümleri sağlar.
Tüm görünümler için aşağıdaki kuralları kullanın:
property
veflat_property
sütunları için:- Mülk adları küçük harflerle yazılır (ör.
visible_region
fromLayerProto
). İç içe yerleştirilmiş özellikleri temsil etmek için nokta gösterimi kullanılır (ör.
visible_region.rect
).property
içindeki yinelenen alanlar köşeli parantezlerle ayırt edilir:Örneğin, yinelenen
visible_region.rect
alanının iki örneğindetop
alanıvisible_region.rect[0].top
vevisible_region.rect[1].top
ile temsil edilir.flat_property
içindeki yinelenen alanlar ayırt edilemez:Örneğin, tekrarlanan
visible_region.rect
alanının iki örneğindetop
alanı her iki örnekte devisible_region.rect.top
ile temsil edilir.
- Mülk adları küçük harflerle yazılır (ör.
value
veprevious_value
sütunları için:- Boole değerleri
'0'
(False
) veya'1'
(True
) ile temsil edilir.
- Boole değerleri
SurfaceFlinger SQL görünümleri
SurfaceFlinger proto verileri şu biçimleri kullanır:
Katman verileri
LayerProto
biçiminde olmalıdır.Hiyerarşinin kök verileri
LayersSnapshotProto
biçimindedir.
Katman verilerini aramak için sf_layer_search
görünümünü kullanın. Bu görünüm aşağıdaki sütunları içerir:
Sütun | Açıklama |
---|---|
state_id |
Katmanın ait olduğu girişin benzersiz kimliği |
ts |
Katmanın ait olduğu girişin zaman damgası |
layer_id |
Katman kimliği |
parent_id |
Üst öğenin katman kimliği |
layer_name |
Katman adı |
property |
Yinelenen alanları hesaba katan mülk adı |
flat_property |
Mülk adı, yinelenen alanları hesaplamıyor |
value |
Dize biçiminde mülk değeri |
previous_value |
Önceki girişteki dize biçimindeki özellik değeri |
Hiyerarşi kök verilerini aramak için sf_hierarchy_root_search
görünümünü kullanın. Bu görünüm şu sütunları içerir:
Sütun | Açıklama |
---|---|
state_id |
Girişin benzersiz kimliği |
ts |
Girişin zaman damgası |
property |
Yinelenen alanları hesaba katan mülk adı |
flat_property |
Mülk adı, yinelenen alanları hesaplamıyor |
value |
Dize biçiminde mülk değeri |
previous_value |
Önceki girişteki dize biçimindeki özellik değeri |
Örnek sorgular
IME
katmanının geçerli ekran sınırlarına sahip olduğu tüm kareleri bulun:SELECT ts, value, previous_value FROM sf_layer_search WHERE layer_name like 'IME%' AND property='screen_bounds.bottom' AND value<='24000'
Taskbar
katmanınıncolor.a
(alfa) değerinin değiştiği tüm kareleri bulun:SELECT ts, value, previous_value FROM sf_layer_search WHERE layer_name like 'Taskbar%' AND property='color.a' AND value!=previous_value
Wallpaper
alt sınırının 2.400'ten az veya buna eşit olduğu tüm kareleri bulun:SELECT ts, value, previous_value FROM sf_layer_search WHERE layer_name LIKE 'Wallpaper%' AND property='bounds.bottom' AND cast_int!(value) <= 2400
Geçerli bir katman yığınına sahip ekranlar için tüm özellikleri listeleyin:
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, ']') ), '%' )
İşlemler SQL görünümü
İşlem proto verileri TransactionTraceEntry
biçimini kullanır.
İşlem verilerinde arama yapmak için transactions_search
görünümünü kullanın. Bu görünüm şu sütunları içerir:
Sütun | Açıklama |
---|---|
state_id |
Proto mülkünün ait olduğu girişin benzersiz kimliği |
ts |
Proto mülkünün ait olduğu girişin zaman damgası |
transaction_id |
Varsa işlem kimliği |
property |
Yinelenen alanları hesaba katan mülk adı |
flat_property |
Mülk adı, yinelenen alanları hesaplamıyor |
value |
Dize biçiminde mülk değeri |
Örnek sorgular
Katman x konumunu -54,0 olarak değiştirmek için bir işlemin uygulandığı kareyi bulun:
SELECT ts, transaction_id, value FROM transactions_search WHERE flat_property='transactions.layer_changes.x' AND value='-54.0'
ImeContainer
katmanının eklendiği kareyi bulun:SELECT ts FROM transactions_search WHERE flat_property='added_layers.name' AND value='ImeContainer'
Geçişler SQL görünümü
Geçiş proto verileri ShellTransition
biçimini kullanır.
Geçiş verilerini aramak için transitions_search
görünümünü kullanın. Bu görünüm şu sütunları içerir:
Sütun | Açıklama |
---|---|
ts |
Gönderim süresi: Varsa gönderim süresine, yoksa 0 değerine ayarlanır. |
transition_id |
Geçiş kimliği |
property |
Yinelenen alanları hesaba katan mülk adı |
flat_property |
Mülk adı, yinelenen alanları hesaplamıyor |
value |
Dize biçiminde mülk değeri |
Örnek sorgular
DefaultMixedHandler
tarafından yönetilen geçişlerin özelliklerini bulun:
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
ViewCapture SQL görünümü
ViewCapture proto verileri View
biçimini kullanır.
Görüntü yakalama verilerini aramak için viewcapture_search
görünümünü kullanın. Bu görünüm şu sütunları içerir:
Sütun | Açıklama |
---|---|
state_id |
Görünümün ait olduğu eyaletin benzersiz kimliği |
ts |
Görünümün ait olduğu eyaletin zaman damgası |
package_name |
Paket adı |
window_name |
Pencere adı |
class_name |
Sınıf adını görüntüleme |
property |
Yinelenen alanları hesaba katan mülk adı |
flat_property |
Mülk adı, yinelenen alanları hesaplamıyor |
value |
Dize biçiminde mülk değeri |
previous_value |
Önceki durumdaki mülk değeri (dize biçiminde) |
Örnek sorgular
SearchContainerView
y yönünde hareket ettiğinde tüm durumları bulun:
SELECT * FROM viewcapture_search
WHERE class_name LIKE '%SearchContainerView'
AND flat_property='translation_y'
AND value!=previous_value
ProtoLog SQL tablosu
ProtoLog proto verileri ProtoLogMessage
biçimini kullanır. Bu görünüm şu sütunları içerir:
Sütun | Açıklama |
---|---|
ts |
Günlüğün zaman damgası |
level |
Günlük kaydı düzeyi |
tag |
Günlük kaydı grubu etiketi |
message |
Günlük mesajı |
stacktrace |
Yığın izleme (varsa) |
location |
Mesajın oluşturulduğu kod konumu |
Örnek sorgular
transition
içeren bir mesaj içeren tüm günlükleri bulma:SELECT ts, message, location FROM protolog WHERE message LIKE '%transition%'
Geçerli işlem kimlikleri içeren tüm günlükleri bulun:
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, '%');
Sorgu çalıştırma
Sol paneli kullandığınızda izleme araması başlar. Bu işlem birkaç saniye sürer. Zaman çizelgesi, yayın sırasında kullanılamaz.
İzleme araması başlatıldıktan sonra arama kutusuna bir sorgu yazın ve Arama Sorgusunu Çalıştır'ı tıklayın veya klavyenizde Enter tuşuna basarak sorguyu çalıştırın.
İşlem tamamlandığında, sonuçlar tablosu orta panelde gösterilir. Sorgunuz, arama kutusunun altında görünür ve oturumlar arasında sorguyu kaydedebileceğiniz bir alan bulunur.
Kayıtlı sorgulara sol paneldeki Kayıtlı sekmesini, yakın zamanda çalıştırılan sorgulara ise Son sekmesini tıklayarak erişebilirsiniz:
Şekil 2. Arama görüntüleyicinin sol paneli.
Sonuçlar
Tüm sorgular, Transactions ve ProtoLog gibi günlük tabanlı izleyicilere benzer etkileşimli davranışa sahip, kaydırılabilir bir görünümde tablo halinde sonuçlar döndürür:
Şekil 3. Arama görüntüleyici sonuçları.
Elde edilen tabloda ts
sütunu varsa bu sütundaki değerler zaman damgası olarak yorumlanır ve zaman çizelgesi yer paylaşımına yeni bir giriş satırı olarak eklenir. Bu satırı tıklayın ve girişler arasında gezinmek için sol ve sağ ok tuşlarınızı kullanın:
Şekil 4. Arama zaman çizelgesi.