استخدِم SQL للعثور على حالات معيّنة في عمليات تتبُّع Winscope Perfetto. استخدِم عارض البحث العام في واجهة مستخدم Winscope لتنفيذ طلبات البحث وعرض رسوم بيانية شارحة للنتائج:
الشكل 1: علامة التبويب "البحث عن المشاهدين"
يتيح لك "عارض البحث" كتابة طلبات بحث SQL مخصّصة وتنفيذها على مسارات Perfetto ، والوصول إلى طلبات البحث الأخيرة والمحفوظة. يوفّر Winscope طرق عرض SQL مخصّصة للمساعدة في البحث عن عمليات تتبُّع SurfaceFlinger وTransactions.
استخدِم الاصطلاحات التالية لجميع طرق العرض:
بالنسبة إلى عمودَي
property
وflat_property
:- تكون أسماء المواقع الإلكترونية بالتنسيق snake case، على سبيل المثال
visible_region
منLayerProto
. يتم استخدام علامة النقطة لتمثيل السمات المُدمجة، على سبيل المثال،
visible_region.rect
.يتم تمييز الحقول المتكرّرة في
property
بأقواس مربّعة:على سبيل المثال، ضمن نسختَين من الحقل المتكرّر
visible_region.rect
، يتم تمثيل الحقلtop
بـvisible_region.rect[0].top
وvisible_region.rect[1].top
.لا يمكن التمييز بين الحقول المتكرّرة في
flat_property
:على سبيل المثال، ضمن نسختَين من الحقل المتكرّر
visible_region.rect
، يتم تمثيل الحقلtop
باستخدامvisible_region.rect.top
في كلتا النسختَين.
- تكون أسماء المواقع الإلكترونية بالتنسيق snake case، على سبيل المثال
بالنسبة إلى عمودَي
value
وprevious_value
:- يتم تمثيل القيم المنطقية بالرمز
'0'
(False
) أو'1'
(True
).
- يتم تمثيل القيم المنطقية بالرمز
جداول SQL في SurfaceFlinger
تستخدم بيانات proto في SurfaceFlinger التنسيقات التالية:
تكون بيانات الطبقة بتنسيق
LayerProto
.تكون بيانات جذر التسلسل الهرمي بتنسيق
LayersSnapshotProto
.
للبحث في بيانات الطبقة، استخدِم طريقة العرض sf_layer_search
. تتضمّن طريقة العرض هذه عمودَين:
العمود | الوصف |
---|---|
state_id |
المعرّف الفريد للإدخال الذي تنتمي إليه الطبقة |
ts |
الطابع الزمني للسجلّ الذي تنتمي إليه الطبقة |
layer_id |
رقم تعريف الطبقة |
parent_id |
رقم تعريف الطبقة الرئيسية |
layer_name |
اسم الطبقة |
property |
اسم الموقع الإلكتروني الذي يراعي الحقول المتكرّرة |
flat_property |
اسم الموقع لا يراعي الحقول المتكرّرة |
value |
قيمة السمة بتنسيق سلسلة |
previous_value |
قيمة السمة من الإدخال السابق بتنسيق سلسلة |
للبحث في بيانات جذر التدرّج الهرمي، استخدِم عرض sf_hierarchy_root_search
. تتضمّن هذه الاطّلاع الأعمدة التالية:
العمود | الوصف |
---|---|
state_id |
المعرّف الفريد للإدخال |
ts |
الطابع الزمني للسجلّ |
property |
اسم الموقع الإلكتروني الذي يراعي الحقول المتكرّرة |
flat_property |
اسم الموقع لا يراعي الحقول المتكرّرة |
value |
قيمة السمة بتنسيق سلسلة |
previous_value |
قيمة السمة من الإدخال السابق بتنسيق سلسلة |
أمثلة على طلبات البحث
ابحث عن جميع اللقطات التي تتضمّن طبقة
IME
ذات حدود شاشة صالحة:SELECT ts, value, previous_value FROM sf_layer_search WHERE layer_name like 'IME%' AND property='screen_bounds.bottom' AND value<='24000'
ابحث عن جميع اللقطات التي تتغيّر فيها قيمة
Taskbar
الطبقةcolor.a
(ألفا):SELECT ts, value, previous_value FROM sf_layer_search WHERE layer_name like 'Taskbar%' AND property='color.a' AND value!=previous_value
ابحث عن جميع اللقطات التي يكون فيها الحدّ الأدنى ل
Wallpaper
أقل من أو يساوي 2400:SELECT ts, value, previous_value FROM sf_layer_search WHERE layer_name LIKE 'Wallpaper%' AND property='bounds.bottom' AND cast_int!(value) <= 2400
أدرِج جميع السمات للعروض التي تحتوي على حزمة طبقات صالحة:
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, ']') ), '%' )
عرض لغة الاستعلامات البنيوية (SQL) للمعاملات
تستخدم بيانات proto للمعاملات التنسيق
TransactionTraceEntry
.
للبحث في بيانات المعاملات، استخدِم طريقة العرض transactions_search
. تتضمّن هذه الطريقة
الأعمدة التالية:
العمود | الوصف |
---|---|
state_id |
المعرّف الفريد للإدخال الذي ينتمي إليه موقع proto |
ts |
الطابع الزمني للسجلّ الذي ينتمي إليه الحقل proto |
transaction_id |
معرّف المعاملة، إن توفّر |
property |
اسم الموقع الإلكتروني الذي يراعي الحقول المتكرّرة |
flat_property |
اسم الموقع لا يراعي الحقول المتكرّرة |
value |
قيمة السمة بتنسيق سلسلة |
أمثلة على طلبات البحث
ابحث عن الإطار الذي تم فيه تطبيق معاملة لتغيير موضع x للطبقة إلى -54.0:
SELECT ts, transaction_id, value FROM transactions_search WHERE flat_property='transactions.layer_changes.x' AND value='-54.0'
ابحث عن الإطار الذي تمت فيه إضافة طبقة
ImeContainer
:SELECT ts FROM transactions_search WHERE flat_property='added_layers.name' AND value='ImeContainer'
عرض لغة الاستعلامات البنيوية (SQL) لعناصر الانتقال
تستخدم بيانات proto الخاصة بالانتقالات التنسيق
ShellTransition
.
للبحث في بيانات الانتقالات، استخدِم طريقة العرض transitions_search
. تتضمّن هذه الطريقة
الأعمدة التالية:
العمود | الوصف |
---|---|
ts |
وقت الإرسال: يتم الرجوع إلى وقت الإرسال إذا كان متاحًا، وإلا 0 |
transition_id |
معرّف الانتقال |
property |
اسم الموقع الإلكتروني الذي يراعي الحقول المتكرّرة |
flat_property |
اسم الموقع لا يراعي الحقول المتكرّرة |
value |
قيمة السمة بتنسيق سلسلة |
أمثلة على طلبات البحث
العثور على خصائص الانتقالات التي يعالجها 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
عرض ViewCapture SQL
تستخدم بيانات ViewCapture proto التنسيق
View
.
للبحث في بيانات ميزة "تسجيل الاطِّلاع"، استخدِم طريقة العرض viewcapture_search
. تتضمّن هذه الطريقة
الأعمدة التالية:
العمود | الوصف |
---|---|
state_id |
المعرّف الفريد للحالة التي ينتمي إليها العرض |
ts |
الطابع الزمني للحالة التي تنتمي إليها طريقة العرض |
package_name |
اسم الحزمة |
window_name |
اسم النافذة |
class_name |
عرض اسم الصف |
property |
اسم الموقع الإلكتروني الذي يراعي الحقول المتكرّرة |
flat_property |
اسم الموقع لا يراعي الحقول المتكرّرة |
value |
قيمة السمة بتنسيق سلسلة |
previous_value |
قيمة السمة من الحالة السابقة بتنسيق سلسلة |
أمثلة على طلبات البحث
ابحث عن جميع الحالات عندما تحرك SearchContainerView
في اتجاه y:
SELECT * FROM viewcapture_search
WHERE class_name LIKE '%SearchContainerView'
AND flat_property='translation_y'
AND value!=previous_value
جدول ProtoLog SQL
تستخدم بيانات ProtoLog proto التنسيق
ProtoLogMessage
. تتضمّن طريقة العرض هذه الأعمدة التالية:
العمود | الوصف |
---|---|
ts |
الطابع الزمني للسجلّ |
level |
مستوى السجلّ |
tag |
علامة مجموعة التسجيل |
message |
رسالة السجلّ |
stacktrace |
تتبُّع تسلسل استدعاء الدوال البرمجية (إذا كان متاحًا) |
location |
الموقع الجغرافي الذي نشأت منه الرسالة |
أمثلة على طلبات البحث
العثور على جميع السجلات التي تحتوي على رسالة تتضمّن
transition
:SELECT ts, message, location FROM protolog WHERE message LIKE '%transition%'
ابحث عن جميع السجلات التي تحتوي على معرّفات معاملات صالحة:
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, '%');
تنفيذ طلبات البحث
عند استخدام اللوحة اليمنى، يبدأ البحث عن التتبّع. يستغرق ذلك بضع ثوانٍ. لا يتوفّر المخطط الزمني أثناء بدء الحملة.
بعد بدء عملية البحث عن التتبّع، اكتب طلب بحث في مربّع البحث وانقر على تنفيذ طلب البحث أو اضغط على Enter على لوحة المفاتيح لتنفيذه.
عند الانتهاء، يظهر جدول النتائج في اللوحة الوسطى. تظهر عبارة البحث أسفل مربّع البحث، مع حقل لحفظها بين الجلسات.
يمكنك الوصول إلى طلبات البحث المحفوظة من خلال النقر على علامة التبويب المحفوظة في اللوحة اليمنى، والوصول إلى طلبات البحث التي تم تنفيذها مؤخرًا من خلال النقر على علامة التبويب الأخيرة:
الشكل 2: اللوحة اليمنى في "عارض البحث"
النتائج
تعرض جميع طلبات البحث نتائج في جدول، ويتم عرضها في عرض قابل للتمرير مع سلوك تفاعلي مشابه لعارضي التتبّع المستندين إلى السجلّ، مثل Transactions وProtoLog:
الشكل 3: البحث عن نتائج المشاهدين
إذا كان الجدول الناتج يحتوي على عمود ts
، تتم معالجة القيم في ذلك العمود
كطوابع زمنية وتُضاف إلى التراكب الزمني كصف جديد من
الإدخالات. انقر على هذا الصف واستخدِم مفتاحَي السهم المتّجه لليمين واليسار للتنقل
بين الإدخالات:
الشكل 4: البحث في المخطط الزمني