Winscope هو أداة ويب تتيح للمستخدمين تسجيل حالات العديد من خدمات النظام وإعادة تشغيلها وتحليلها أثناء الرسوم المتحركة والانتقالات وبعدها. يسجِّل Winscope جميع حالات خدمة النظام ذات الصلة في ملف تتبُّع. باستخدام واجهة مستخدم Winscope مع ملف التتبع، يمكنك فحص حالة هذه الخدمات لكل إطار رسوم متحركة، مع تسجيل شاشة أو بدونه، عن طريق إعادة التشغيل والتنقل وتصحيح الأخطاء خلال الانتقالات.
في ما يلي خدمات النظام التي تُنشئ عمليات تتبُّع يمكن تحميلها إلى Winscope:
- SurfaceFlinger
- مدير النوافذ
- WMShell
- أداة IME
- قاذفة القنابل
تشغيل عارض التتبُّع في Winscope
يُعد تتبع Winscope جزءًا من الخدمات الموجودة على النظام الأساسي. يوضّح هذا القسم الخطوات المطلوبة لتنزيل وإنشاء وتشغيل أداة عرض عمليات التتبّع Winscope.
اتّبِع الخطوات التالية لإعداد جهاز الكمبيوتر لتشغيل أداة تتبُّع Winscope:
- تنزيل رمز المصدر لنظام التشغيل Android
انتقل إلى مجلد Winscope:
cd development/tools/winscope
تثبيت الملحقات باستخدام:
npm install
للاطّلاع على قائمة بالأوامر المتاحة، شغِّل:
npm run
يمكنك إنشاء جميع أهداف الإصدارات العلنية والاختبارية باستخدام:
npm run build:prod
يمكنك تشغيل Winscope باستخدام:
npm run start
التقاط آثار الأنشطة
يمكنك تسجيل عمليات التتبُّع على الجهاز أو من خلال Winscope أو من خلال أوامر Android Debug Bridge (adb).
التقاط آثار الأنشطة على الجهاز
يمكنك تسجيل عمليات التتبّع على الجهاز لجمع البيانات عند الإبلاغ عن أخطاء تتعلّق بالرسوم المتحرّكة . ويتم تسجيل جميع عمليات تتبُّع واجهة المستخدم بهذه الطريقة، وذلك بسبب عدم إمكانية تخصيص الإعدادات.
على جهاز Android:
- فعِّل خيارات المطوّرين.
- اختَر تتبُّع النظام ضمن خيارات المطوّرين.
- فعِّل جمع آثار أنشطة أداة Winscope.
- ضمن غير ذلك:
- فعِّل خيار إرفاق التسجيلات بتقارير الأخطاء.
- فعِّل الخيار عرض مربّع الإعدادات السريعة.
- انتقِل إلى المكان الذي تريد إعادة إنتاج الخطأ فيه.
لبدء الالتقاط، افتح "الإعدادات السريعة" واختَر تسجيل تتبُّع:
الشكل 1. قائمة الإعدادات السريعة من خلال ميزة "تسجيل التتبّع"
نفِّذ الخطوات اللازمة فقط لإعادة إنتاج الخطأ.
لإيقاف عملية التسجيل، افتح "الإعدادات السريعة" واختَر إيقاف التتبُّع.
شارِك السجلّ الذي تم التقاطه باستخدام أحد الخيارات المدرَجة، مثل Gmail أو Drive أو BetterBug.
التقاط الآثار من خلال Winscope
يمكنك تسجيل عمليات التتبّع باستخدام Winscope لإجراء عمليات التطوير والتصحيح على الجهاز. يستخدم Winscope adb، الذي يدعم اتصال الجهاز عبر USB أو Wi-Fi.
في Winscope:
في شاشة جمع آثار الأنشطة، انقر على وكيل ADB:
الشكل 2: تسجيل عمليات التتبّع في Winscope
شغِّل الخادم الوكيل Winscope ADB Connect لالتقاط الآثار مباشرةً من متصفحك.
شغِّل الأمر:
python3 $ANDROID_BUILD_TOP/development/tools/winscope/src/adb/winscope_proxy.py
لبدء الالتقاط، في شاشة جمع الآثار، اختَر الاستهدافات والضبط، ثم انقر على بدء التتبّع:
الشكل 3: جمع عمليات التتبّع في Winscope
لإيقاف التقاط الصور، انقر على إنهاء التتبُّع:
الشكل 4. إنهاء التتبع على Winscope.
أثناء تحميل الأداة للتتبُّعات في واجهة مستخدم Winscope، تظهر رسائل الجلب وتحليل ملفات Proto على الشاشة.
إنشاء ملف تخزين حالة باستخدام Winscope
لإنشاء نسخة احتياطية من حالة باستخدام Winscope، اختَر علامة التبويب النسخ الاحتياطي في شاشة جمع عمليات التتبُّع، ثم انقر على نسخة احتياطية من الحالة:
الشكل 5. نسخ الحالة في Winscope
تسجيل عمليات التتبّع من خلال أوامر adb
شغِّل adb root
قبل تنفيذ أوامر adb shell
لكلّ من
عمليات التتبُّع التالية. في نهاية عملية التتبّع، تتوفّر ملفات التتبّع في
/data/misc/wmtrace
. لنسخ ملف أو دليل ومجلداته الفرعية من
جهاز، اطّلِع على نسخ الملفات من جهاز وإلى جهاز.
اطّلِع على adb لمزيد من المعلومات.
عمليات تتبُّع WindowManager
لتسجيل تتبعات WindowManager:
تفعيل التتبّع:
adb shell wm tracing start
إيقاف التتبُّع:
adb shell wm tracing stop
حفظ بيانات التسجيل في ملف أثناء تشغيل تسجيل التتبُّع:
adb shell wm tracing save-for-bugreport
تسجيل آثار الأنشطة مرة واحدة لكل إطار:
adb shell wm tracing frame
تسجيل كل معاملة:
adb shell wm tracing transaction
يُرجى ضبط الحد الأقصى لحجم السجلّ (بالكيلوبايت):
adb shell wm tracing size
حالة آثار الطباعة:
adb shell wm tracing status
اضبط مستوى السجلّ على
critical
(النوافذ المرئية فقط التي تتضمّن معلومات مُخفَّضة) أوtrim
(كل النوافذ التي تتضمّن معلومات مُخفَّضة) أوall
(كل النوافذ والمعلومات):adb shell wm tracing level
ProtoLog
يتم استخدام الأوامر التالية لنظام ProtoLog.
في عملية system_server
:
بدء ProtoLog:
adb shell cmd window logging start
إيقاف ProtoLog:
adb shell cmd window logging stop
تفعيل ProtoLog لمجموعات السجلات المحدّدة:
adb shell cmd window logging enable [group...]
إيقاف ProtoLog لمجموعات السجلّات المحدَّدة:
adb shell cmd window logging disable [group...]
فعِّل تسجيل الدخول إلى Logcat لمجموعات السجلّات المحدَّدة:
adb shell cmd window logging enable-text [group...]
إيقاف تسجيل Logcat لمجموعات السجلّات المحدّدة:
adb shell cmd window logging disable-text [group...]
في WMShell:
بدء ProtoLog:
adb shell dumpsys activity service SystemUIService WMShell
تتبُّع الانتقال
يتم استخدام الأوامر التالية لتتبُّع الانتقالات:
في عملية system_server
:
بدء عملية تتبُّع:
adb shell cmd window shell tracing start
إيقاف عملية تتبُّع:
adb shell cmd window shell tracing stop
بدء عملية التتبُّع في WMShell:
adb shell dumpsys activity service SystemUIService WMShell transitions tracing start
إيقاف عملية التتبُّع في WMShell:
adb shell dumpsys activity service SystemUIService WMShell transitions tracing stop
محرر أسلوب الإدخال
تُستخدَم الأوامر التالية لتتبُّع محرِّر أسلوب الإدخال (IME):
بدء تتبُّع أداة IME لبرامج أسلوب الإدخال (IM) وخدمة أسلوب الإدخال (IMS) وخدمة إدارة أسلوب الإدخال (IMMS):
adb shell ime tracing start
بدء تتبُّع برامج IME وIMS وIMMS:
adb shell ime tracing stop
طبقات SurfaceFlinger
يستخدم تتبُّع طبقات SurfaceFlinger عملية تتبُّع Perfetto للتسجيل. اطّلِع على إعدادات التتبّع للحصول على معلومات عن الإعداد.
اطّلِع على المثال التالي لإعداد تتبُّع طبقة SurfaceFlinger:
unique_session_name: "surfaceflinger_layers_active"
buffers: {
size_kb: 63488
fill_policy: RING_BUFFER
}
data_sources: {
config {
name: "android.surfaceflinger.layers"
surfaceflinger_layers_config: {
mode: MODE_ACTIVE
trace_flags: TRACE_FLAG_INPUT
trace_flags: TRACE_FLAG_COMPOSITION
trace_flags: TRACE_FLAG_HWC
trace_flags: TRACE_FLAG_BUFFERS
trace_flags: TRACE_FLAG_VIRTUAL_DISPLAYS
}
}
}
راجع مثال الأمر التالي لإنشاء تتبع لطبقات SurfaceFlinger:
adb shell -t perfetto \
-c - --txt \
-o /data/misc/perfetto-traces/trace \
معاملات SurfaceFlinger
يستخدم تتبُّع المعاملات في SurfaceFlinger عملية تتبُّع Perfetto لتسجيل البيانات. يمكنك الاطّلاع على إعداد التتبُّع للحصول على معلومات الضبط.
اطّلِع على المثال التالي لإعداد Perfetto لواجهة SurfaceFlinger التتبُّع النشط:
unique_session_name: "surfaceflinger_transactions_active"
buffers: {
size_kb: 1024
fill_policy: RING_BUFFER
}
data_sources: {
config {
name: "android.surfaceflinger.transactions"
surfaceflinger_transactions_config: {
mode: MODE_ACTIVE
}
}
}
write_into_file: true
file_write_period_ms: 100
اطّلِع على المثال التالي لضبط Perfetto لميزة SurfaceFlinger التتبُّع المستمر:
unique_session_name: "surfaceflinger_transactions_continuous"
buffers: {
size_kb: 1024
fill_policy: RING_BUFFER
}
data_sources: {
config {
name: "android.surfaceflinger.transactions"
surfaceflinger_transactions_config: {
mode: MODE_CONTINUOUS
}
}
}
راجع مثال الأمر التالي لإنشاء تتبع لمعاملات SurfaceFlinger:
adb shell perfetto \
-c - --txt \
-o /data/misc/perfetto-traces/trace \
إنشاء ملف بيانات حالة باستخدام adb
يقرأ Winscope لقطة من حالات WindowManager وSurfaceFlinger من تقارير الأخطاء. تخزِّن تقارير الأخطاء الحالات كملفات proto منفصلة ضمن المجلد
proto
. لإنشاء نُسخة من حالة الجهاز باستخدام adb، نفِّذ يليه
الأوامر.
بالنسبة إلى WindowManager:
adb exec-out dumpsys window --proto > window_dump.winscope
بالنسبة إلى SurfaceFlinger:
adb exec-out dumpsys SurfaceFlinger --proto > sf_dump.winscope
تحليل آثار الأنشطة
ولتصحيح أخطاء الحالات المؤقتة وغير الصالحة التي تتسبب في مشاكل في الرسوم المتحركة، يجمع برنامج Winscope ملفات تتبُّع مختلفة، ويوفر إمكانية البحث والعرض المرئي عبر الإطارات والجداول الزمنية، ويعرض رسائل النموذج الأولي بطريقة مترابطة. يساعد تحليل أثر العمليات في Winscope في تحديد الطبقة والإطار والحالة الدقيقة لمكان حدوث الخطأ.
استخدام Winscope
عندما تلتقط الآثار، حلِّل آثار التتبُّع على Winscope:
حمِّل عمليات التتبّع المحفوظة باستخدام اللوحة على يسار الصفحة. يمكنك إزالة عمليات التتبّع المحمَّلة أو تحميل المزيد من عمليات التتبّع.
الشكل 6: تحميل آثار الأنشطة على Winscope.
انقر على عرض بيانات آثار الأنشطة لعرض عمليات التتبُّع التي تم تحميلها. تظهر علامات التبويب لكل عملية تتبُّع في اللوحة العلوية من النافذة. إذا كان الملف الذي تم تحميله يحتوي على عمليات التتبّع ذات الصلة، يتم عرض عرض عائم لتتبّع تسجيل الشاشة على الشاشة.
الشكل 7: عرض عمليات التتبّع في Winscope
استخدِم واجهة المستخدم في اللوحة العلوية من النافذة لإعادة تسمية وتحميل التتبُّع الذي حمّلته أو لتحميل تتبُّع جديد.
يمكنك التنقّل بين عمليات التتبّع بمرور الوقت باستخدام أداة شريط التمرير الزمني في اللوحة السفلية من النافذة. للتنقل عبر الوقت بشكل إضافي، استخدم الميزات التالية، كما هو موضح في الشكل 8:
- للانتقال إلى وقت أو حدث معيّن، استخدِم المؤشر (شريط التمرير الزمني) أو السهمَين لليسار على يسار مربّع عرض الوقت (في أسفل يمين الصفحة)، أو السهمَين لليسار واليمين على لوحة المفاتيح.
- لعرض مسارات محدّدة بألوان مختلفة على المخطط الزمني، استخدِم القائمة المنسدلة (على يمين شريط تمرير الوقت). يتم تلقائيًا عرض آخر ثلاث عمليات تتبُّع تم عرضها باستخدام علامات تبويب التتبُّع في المخطط الزمني.
- للحصول على عرض دقيق لجميع عمليات التتبّع التي تم تحميلها، استخدِم أداة التكبير أو التصغير (أسفل شريط التمرير الزمني)، أو انتقِل باستخدام لوحة المفاتيح. استخدِم زر إعادة الضبط لإعادة ضبط مستوى التكبير/التصغير.
- للحصول على عرض موسّع لتوزيع التتبّع بمرور الوقت، انقر على سهم الصعداء (في أسفل يسار الصفحة).
الشكل 8. التنقّل في الوقت على Winscope
في طريقة العرض الموسّعة (الشكل 9)، اختَر إطارات زمنية معيّنة وتكبيرها للتحقّق بشكل أفضل:
الشكل 9: تم توسيع المخطط الزمني في Winscope.
لفحص آثار الأنشطة، يمكنك عرض حالة الجهاز من خلال ميزة تسجيل الشاشة. لفحص عملية تتبُّع معيّنة، انقر على علامة تبويب بيانات التتبّع ذات الصلة في اللوحة العلوية من الأداة.
بالنسبة إلى تتبُّع Surface Flinger، تعرض ثلاث لوحات طرق عرض مختلفة لعملية التتبّع خلال فترة زمنية معيّنة، كما هو موضّح في الشكل 10:
الشكل 10. تتبُّع Surface Flinger على Winscope.
عرض الطبقات: عرض ثلاثي الأبعاد للطبقات في التراكبات المستطيلة تقوم عناصر واجهة المستخدم التالية بضبط المستطيلات لعرض العناصر الرسومية من حيث موضعها وحجمها وتحويلها وترتيبها z:
- يُدير شريط التمرير التدوير (أعلى يمين عرض "الطبقات") المستطيلات المُدرَجة لعرضها من زوايا محدّدة.
- يعمل شريط تمرير التباعد (أعلى يمين عرض "الطبقات") على ضبط التباعد بين الطبقات لإنشاء طريقة العرض المركّبة المختارة.
- تتيح لك أدوات التكبير/التصغير (في أعلى يسار عرض "الطبقات") التكبير والتصغير في الطبقات لفحصها بشكل أفضل.
- زر إعادة الضبط (في أعلى يسار "عرض الطبقات") يعيد إعدادات الكاميرا إلى العرض الأصلي.
- اسحب المستطيلات لتسهيل التكبير/التصغير بشكل أفضل.
العرض التسلسلي: عرض هرمي كامل للطبقات.
- مرئي فقط (أعلى يسار العرض الهرمي)، عند تحديده، يؤدي إلى إخفاء الطبقات غير المرئية من التسلسل الهرمي للمساعدة في تصور العناصر على الشاشة.
- مسطح (أعلى يسار العرض الهرمي)، عند تحديده، يعرض التدرج الهرمي كقائمة مسطحة من الطبقات.
- لا يتم اختيار عرض الاختلاف (أعلى يمين العرض الهرمي) إلا عند حدوث انتقال في الحالة. عند تحديدها، تقارن الأداة الحالة الحالية مع الحالة السابقة. يتم تمييز العنصر الجديد باللون الأخضر، ويتم تمييز العنصر المحذوف باللون الأحمر، ويتم تمييز العنصر المعدَّل باللون الأزرق.
طريقة عرض الخصائص: خصائص الطبقة المحددة. تحتوي اللوحة العلوية في عرض الخصائص على معلومات عن السمات المفتاحية فقط، مثل مستوى الرؤية والشكل الهندسي والمخطّط الاحتياطي. تحتوي اللوحة السفلية لعرض المواقع على Proto Dump لجميع المواقع.
- يعمل مربّع الاختيار عرض الاختلاف (أعلى يمين عرض "الخصائص") على النحو نفسه في عرض الهيكل الهرمي.
- يعرض الخيار إظهار الإعدادات التلقائية (أعلى يمين شاشة "الخصائص")، عند
تحديده قيم Proto التلقائية في Proto Dump.
لا يتم إدراج هذه القيم تلقائيًا في Proto Dump. قيم Proto الافتراضية مأخوذة من تعريف حقل Proto.
إذا لم يتم ضبط قيمة تلقائية غير صفرية لحقل proto، فإنّ
قيم proto التلقائية المعروضة هي:
- سلاسل: Null
- الأرقام: 0
- القيم المنطقية: False
- العناصر: خالية
تتم مزامنة الاختيار بين طرق العرض الثلاث وتسجيل الشاشة، أي أنّه يتم تعديل جميع عمليات التتبّع بشكل متزامن عند الانتقال إلى نقطة زمنية مختلفة. للاطّلاع على خصائص طبقة معيّنة، اختَر الطبقة من خلال النقر عليها في عرض "المخطّط الهرمي" أو من خلال النقر على المستطيل المقابل لها في عرض "الخصائص". يشير المستطيل الأرجواني إلى أن أثر العرض مرتبط بهذه الطبقة. وعند النقر مرّتين على طبقة أرجوانية، يتم الانتقال إلى واجهة المستخدم للانتقال إلى علامة تبويب تتبُّع العرض ذات الصلة.
بالنسبة إلى تتبُّع مدير النوافذ، تعرض ثلاث لوحات طرق عرض مختلفة للتتبُّع في فترة زمنية معيّنة، كما هو موضَّح في الشكل 11:
- عرض Windows: عرض ثلاثي الأبعاد للطبقات.
- العرض التسلسلي: عرض هرمي كامل للطبقات.
- يحتوي عرض المواقع على Proto Dump لجميع المواقع.
تتم مزامنة الاختيار بين طرق العرض الثلاث وتسجيل الشاشة، أي يتم تعديل جميع عمليات التتبّع بشكل متزامن عند الانتقال إلى نقطة زمنية مختلفة.
الشكل 11. تتبُّع "مدير النوافذ" على Winscope
بالنسبة إلى عمليات تتبُّع المعاملات، يتم عرض المعاملات بين Surface Flinger وWindow Manager بتنسيق جدول يمكن البحث فيه حسب المعرّفات والنوع والنص المعروضَين، بالإضافة إلى عرض الخصائص الذي يعرض ملف تفريغ proto. الاختيار بين العرضَين وتسجيل الشاشة المتزامنَين:
الشكل 12: تتبُّع المعاملات على Winscope
بالنسبة إلى عمليات تتبُّع ProtoLog، يتم تقديم المعلومات بتنسيق جدول يمكن البحث فيه حسب العلامات وملفات المصدر والنص:
الشكل 13. تتبع ProtoLog على Winscope.
بالنسبة إلى عمليات تتبُّع التنقّلات، يتم عرض قائمة بالتنقّلات التي تتضمّن رقم التعريف والنوع ووقت الإرسال والمدة والحالة، بالإضافة إلى خصائص التنقّل المحدّد:
الشكل 14. يتم تتبُّع عمليات الانتقال على Winscope.