البحث عن عمليات التتبُّع

استخدِم 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 في كلتا النسختَين.

  • بالنسبة إلى عمودَي 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 على لوحة المفاتيح لتنفيذه.

عند الانتهاء، يظهر جدول النتائج في اللوحة الوسطى. تظهر عبارة البحث أسفل مربّع البحث، مع حقل لحفظها بين الجلسات.

يمكنك الوصول إلى طلبات البحث المحفوظة من خلال النقر على علامة التبويب المحفوظة في اللوحة اليمنى، والوصول إلى طلبات البحث التي تم تنفيذها مؤخرًا من خلال النقر على علامة التبويب الأخيرة:

اللوحة اليمنى في &quot;عارض البحث&quot;

الشكل 2: اللوحة اليمنى في "عارض البحث"

النتائج

تعرض جميع طلبات البحث نتائج في جدول، ويتم عرضها في عرض قابل للتمرير مع سلوك تفاعلي مشابه لعارضي التتبّع المستندين إلى السجلّ، مثل Transactions وProtoLog:

نتائج عارض البحث

الشكل 3: البحث عن نتائج المشاهدين

إذا كان الجدول الناتج يحتوي على عمود ts، تتم معالجة القيم في ذلك العمود كطوابع زمنية وتُضاف إلى التراكب الزمني كصف جديد من الإدخالات. انقر على هذا الصف واستخدِم مفتاحَي السهم المتّجه لليمين واليسار للتنقل بين الإدخالات:

المخطط الزمني للبحث

الشكل 4: البحث في المخطط الزمني