Winscope یک ابزار وب است که به کاربران اجازه می دهد تا وضعیت چندین سرویس سیستم را در طول و بعد از انیمیشن ها و انتقال ها ضبط، پخش و تجزیه و تحلیل کنند. Winscope تمام وضعیت های مربوط به سرویس سیستم را در یک فایل ردیابی ثبت می کند. با استفاده از رابط کاربری Winscope همراه با فایل ردیابی، میتوانید وضعیت این سرویسها را برای هر فریم انیمیشن، با یا بدون ضبط صفحه، با پخش مجدد، استپ کردن و اشکالزدایی از طریق انتقال بررسی کنید.
سرویس های سیستمی که ردیابی هایی را تولید می کنند که می توانند در Winscope بارگذاری شوند به شرح زیر است:
- سرفیس فلینگر
- WindowManager
- WMShel
- IME
- پرتاب کننده
نمایشگر ردیابی Winscope را اجرا کنید
ردیابی Winscope بخشی از خدمات روی پلتفرم است. این بخش مراحل مورد نیاز برای دانلود، ساخت و اجرای نمایشگر ردیابی Winscope را تشریح می کند.
مراحل زیر را برای تنظیم رایانه شخصی خود برای اجرای ردیاب Winscope دنبال کنید:
- سورس اندروید را دانلود کنید .
به پوشه Winscope بروید:
cd development/tools/winscope
وابستگی ها را با استفاده از:
npm install
برای مشاهده لیستی از دستورات موجود، اجرا کنید:
npm run
تمام اهداف تولید و آزمایش را با استفاده از:
npm run build:prod
Winscope را با استفاده از:
npm run start
ردیابی را ثبت کنید
میتوانید از طریق Winscope یا از طریق دستورات Android Debug Bridge (adb) ردیابی روی دستگاه بگیرید.
ردیابی روی دستگاه
برای جمعآوری دادهها هنگام ثبت اشکالات مربوط به مشکلات انیمیشن، ردیابی روی دستگاه بگیرید. همه ردیابیهای رابط کاربری با این روش ثبت میشوند، زیرا پیکربندی را نمیتوان سفارشی کرد.
در دستگاه اندرویدی شما:
- گزینه های توسعه دهنده را فعال کنید .
- System Tracing را در قسمت Developer Options انتخاب کنید.
- جمع آوری آثار Winscope را فعال کنید.
- تحت متفرقه :
- پیوست کردن ضبطها به گزارشهای اشکال را فعال کنید.
- نمایش کاشی تنظیمات سریع را فعال کنید.
- به جایی که باید اشکال را تکرار کنید بروید.
برای شروع ضبط، تنظیمات سریع را باز کنید و ضبط ردیابی را انتخاب کنید:
شکل 1. منوی تنظیمات سریع با Record Trace.
فقط مراحل لازم برای تولید مجدد اشکال را اجرا کنید.
برای توقف ضبط، تنظیمات سریع را باز کرده و توقف ردیابی را انتخاب کنید.
گزارش گرفته شده را با استفاده از یکی از گزینه های فهرست شده مانند Gmail، Drive یا BetterBug به اشتراک بگذارید.
ردیابی را از طریق Winscope ثبت کنید
میتوانید با استفاده از Winscope برای توسعه محلی و اشکالزدایی، ردیابیها را ثبت کنید. Winscope از adb استفاده می کند که از اتصال دستگاه از طریق USB یا Wi-Fi پشتیبانی می کند.
در وینسکوپ:
در صفحه Collect Traces ، روی ADB Proxy کلیک کنید:
شکل 2. ردیابی در Winscope.
پراکسی Winscope ADB Connect را راه اندازی کنید تا ردیابی ها را مستقیماً از مرورگر خود ثبت کنید.
دستور را اجرا کنید:
python3 $ANDROID_BUILD_TOP/development/tools/winscope/src/adb/winscope_proxy.py
برای شروع ضبط، در صفحه جمع آوری ردیابی، اهداف و پیکربندی را انتخاب کنید و روی Start trace کلیک کنید:
شکل 3. ردیابی ها را روی Winscope جمع آوری کنید.
برای توقف ضبط، روی پایان ردیابی کلیک کنید:
شکل 4. پایان ردیابی در وینسکوپ.
همانطور که ابزار ردیابی ها را در رابط کاربری Winscope آپلود می کند، پیام های Fetching and Parsing Proto Files روی صفحه ظاهر می شوند.
با استفاده از Winscope، State Dump را ایجاد کنید
برای گرفتن یک زباله حالت با استفاده از WinScope ، در صفحه Collect Traces برگه زباله را انتخاب کرده و سپس روی Dump State کلیک کنید:
شکل 5. حالت تخلیه در Winscope.
اثری را از طریق دستورات ADB ضبط کنید
قبل از اجرای دستورات adb shell
برای هر یک از آثار زیر ، adb root
اجرا کنید. در پایان ردیابی ، پرونده های ردیابی در /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
حداکثر اندازه ورود به سیستم (در KB) را تنظیم کنید:
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 logging را برای گروه های گزارش داده شده فعال کنید:
adb shell cmd window logging enable-text [group...]
غیرفعال کردن Logcat logging برای گروه های گزارش داده شده:
adb shell cmd window logging disable-text [group...]
در WMShel:
شروع ProtoLog:
adb shell dumpsys activity service SystemUIService WMShell
ردیابی انتقال
برای ردیابی انتقال از دستورات زیر استفاده می شود:
در فرآیند system_server
:
شروع یک ردیابی:
adb shell cmd window shell tracing start
توقف یک ردیابی:
adb shell cmd window shell tracing stop
ردیابی را در WMSell شروع کنید:
adb shell dumpsys activity service SystemUIService WMShell transitions tracing start
توقف ردیابی در WMSell:
adb shell dumpsys activity service SystemUIService WMShell transitions tracing stop
ویرایشگر روش ورودی
دستورات زیر برای ردیابی Input Method Editor (IME) استفاده می شود:
ردیابی IME را برای مشتریان روش ورودی (IM)، سرویس روش ورودی (IMS) و سرویس مدیریت روش ورودی (IMMS) شروع کنید:
adb shell ime tracing start
ردیابی مشتریان IME، IMS و IMMS را شروع کنید:
adb shell ime tracing stop
لایه های SurfaceFlinger
ردیابی لایه SurfaceFlinger از Trace Perfetto برای ضبط استفاده می کند. برای اطلاعات پیکربندی به پیکربندی Trace مراجعه کنید.
مثال زیر از یک پیکربندی برای ردیابی لایه 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 از Trace Perfetto برای ضبط استفاده می کند. برای اطلاعات پیکربندی به پیکربندی Trace مراجعه کنید.
مثال زیر از پیکربندی 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 \
ایجاد حالت dump با استفاده از adb
Winscope یک عکس فوری از وضعیت های WindowManager و SurfaceFlinger را از گزارش های باگ می خواند. گزارش های اشکال ایالات متحده را به عنوان پرونده های Proto جداگانه در پوشه proto
ذخیره می کنند. برای ایجاد حالت dump با استفاده از 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 بارگذاری کنید.
برای تجسم ردیابی های آپلود شده روی View Traces کلیک کنید. برگه های هر ردیابی در پانل بالای پنجره ظاهر می شود. اگر فایل آپلود شده حاوی ردپای مربوطه باشد، یک نمای شناور از ردیاب ضبط شده روی صفحه نمایش پوشیده می شود.
شکل 7. آثار را در Winscope مشاهده کنید.
برای تغییر نام از رابط کاربری در بالاترین پانل پنجره استفاده کنید و ردیابی آپلود شده خود را دانلود کنید یا برای آپلود یک مورد جدید.
با استفاده از ابزار لغزنده زمان در پانل پایین پنجره، در ردیابی ها در طول زمان حرکت کنید. برای پیمایش زمان اضافی، از ویژگی های زیر استفاده کنید، همانطور که در شکل 8 نشان داده شده است:
- برای پیمایش به یک زمان یا رویداد خاص، از مکان نما (لغزنده زمان) یا سمت چپ استفاده کنید و راست فلش در جعبه نمایش زمان (گوشه سمت چپ پایین) یا فلش های چپ و راست روی صفحه کلید خود.
- برای نمایش آثار رنگی انتخاب شده در جدول زمانی ، از منوی کشویی (سمت چپ کشویی زمان) استفاده کنید. به طور پیش فرض ، سه اثر آخر مشاهده شده با استفاده از زبانه های Trace در جدول زمانی نمایش داده می شوند.
- برای نمای دانه ای از تمام آثار بارگذاری شده ، از بزرگنمایی استفاده کنید یا بزرگنمایی کنید ابزار (زیر نوار لغزنده زمان)، یا روی صفحه کلید خود اسکرول کنید. از دکمه تنظیم مجدد برای تنظیم مجدد سطح بزرگنمایی استفاده کنید.
- برای مشاهده گسترده توزیع ردیابی در طول زمان، روی فلش بالا کلیک کنید (گوشه سمت راست پایین).
شکل 8. پیمایش زمان در Winscope.
در نمای گسترش یافته (شکل 9)، برای بازرسی بهتر، بازه های زمانی خاص را انتخاب کرده و بزرگنمایی کنید:
شکل 9. جدول زمانی گسترده در Winscope.
برای بررسی آثار، می توانید وضعیت دستگاه را با ضبط صفحه نمایش مشاهده کنید. برای بررسی یک ردیابی خاص، روی برگه ردیابی مربوطه در پانل بالای ابزار کلیک کنید.
برای ردیابی Surface Flinger ، سه پنل نماهای متفاوتی از ردیابی را در یک دوره زمانی معین نشان میدهند، همانطور که در شکل 10 نشان داده شده است:
شکل 10. ردیابی سطحی فلینگر در وینسکوپ.
نمای لایه ها : نمای سه بعدی از لایه ها در پوشش های مستطیلی. عناصر رابط کاربری زیر مستطیل ها را طوری تنظیم می کنند که عناصر گرافیکی را از نظر موقعیت، اندازه، تبدیل و ترتیب z نمایش دهند:
- نوار لغزنده Rotation (بالا سمت چپ نمای لایه ها) مستطیل های لایه ای را می چرخاند تا آنها را در زوایای انتخاب شده مشاهده کنید.
- نوار لغزنده Spacing (بالا سمت راست نمای لایه ها) فاصله بین لایه ها را برای ایجاد نمای ترکیبی انتخابی تنظیم می کند.
- ابزارهای بزرگنمایی (بالا سمت راست نمای لایه ها) بزرگنمایی می کنند و بزرگنمایی کنید برای بازرسی بهتر وارد لایه ها شوید.
- دکمه ریست (بالا سمت راست نمای لایه ها) تنظیمات دوربین را به نمای اصلی باز می گرداند.
- مستطیل ها را بکشید تا بزرگنمایی بهتر انجام شود.
نمای سلسله مراتبی : سلسله مراتب کامل لایه ها.
- فقط قابل مشاهده است (بالا سمت راست نمای سلسله مراتب)، هنگامی که انتخاب می شود، لایه های نامرئی را از سلسله مراتب پنهان می کند تا به تجسم عناصر روی صفحه کمک کند.
- Flat (بالا سمت راست نمای سلسله مراتبی)، هنگامی که انتخاب می شود، سلسله مراتب را به عنوان یک لیست مسطح از لایه ها نشان می دهد.
- نمایش تفاوت (بالا سمت چپ نمای سلسله مراتبی) فقط زمانی انتخاب می شود که یک انتقال حالت وجود داشته باشد. وقتی انتخاب شد، ابزار وضعیت فعلی را با حالت قبلی مقایسه می کند. یک عنصر جدید با رنگ سبز، یک عنصر حذف شده با رنگ قرمز و یک عنصر اصلاح شده با رنگ آبی مشخص می شود.
نمای خصوصیات : ویژگی های لایه انتخاب شده. پانل برتر نمای Properties شامل اطلاعاتی در مورد تنها خصوصیات کلیدی مانند دید ، هندسه و بافر است. پانل پایینی نمای Properties حاوی یک Proto Dump از تمام ویژگی ها است.
- چک باکس Show Diff (بالا سمت چپ نمای Properties) مانند نمای سلسله مراتبی عمل می کند.
- نمایش پیشفرضها (بالا سمت چپ نمای Properties)، وقتی انتخاب شد، مقادیر پروتو پیشفرض را در Proto Dump نمایش میدهد. به طور پیش فرض، این مقادیر در Proto Dump فهرست نشده اند. مقادیر پروتو پیش فرض از تعریف فیلد proto گرفته شده است. اگر یک فیلد پروتو دارای مقدار پیشفرض غیر تهی نباشد، مقادیر پروتو پیشفرض نشان داده شده عبارتند از:
- رشته ها: پوچ
- اعداد: 0
- مقادیر بولی: نادرست
- اشیاء: تهی
انتخاب بین سه نما و ضبط صفحه همگام میشود، یعنی وقتی به نقطهای از زمان حرکت میکنید، همه ردیابیها به طور همزمان بهروزرسانی میشوند. برای دیدن خصوصیات یک لایه، لایه را با کلیک بر روی آن در نمای سلسله مراتبی یا با کلیک بر روی مستطیل مربوطه در نمای Properties انتخاب کنید. یک مستطیل بنفش نشان می دهد که یک رد دید به این لایه چسبیده است. با دوبار کلیک کردن روی یک لایه بنفش، رابط کاربری برای تغییر به برگه ردیابی مشاهده مربوطه حرکت می کند.
برای ردیابی Window Manager ، سه پانل در یک دوره زمانی معین ، نمایش های مختلفی از ردیابی را نشان می دهد ، همانطور که در شکل 11 نشان داده شده است:
- نمای ویندوز : نمای سه بعدی از لایه ها.
- نمای سلسله مراتبی : سلسله مراتب کامل لایه ها.
- نمای Properties شامل یک Proto Dump از همه خواص است.
انتخاب بین سه نما و ضبط صفحه همگام میشود، یعنی وقتی به نقطهای از زمان حرکت میکنید، همه ردیابیها به طور همزمان بهروزرسانی میشوند.
شکل 11. ردیابی Window Manager در Winscope.
برای ردیابی تراکنشها ، تراکنشهای بین Surface Flinger و Window Manager در قالب جدولی ارائه میشوند که با شناسهها، نوع و متن نمایشدادهشده قابل جستجو است، همراه با نمای ویژگیهایی که پروتو dump را نشان میدهد. انتخاب بین دو نما و ضبط صفحه همگام می شود:
شکل 12. ردیابی تراکنش ها در Winscope.
برای ردیابی های ProtoLog ، اطلاعات در قالب جدول ارائه می شود که با برچسب ها، فایل های منبع و متن قابل جستجو است:
شکل 13. ردیابی ProtoLog در Winscope.
برای Traces Transitions ، فهرستی از انتقال ها با شناسه، نوع، زمان ارسال، مدت زمان و وضعیت همراه با ویژگی های انتقال انتخاب شده نمایش داده می شود:
شکل 14. ردیابی انتقال در Winscope.
Winscope یک ابزار وب است که به کاربران اجازه می دهد تا وضعیت چندین سرویس سیستم را در طول و بعد از انیمیشن ها و انتقال ها ضبط، پخش و تجزیه و تحلیل کنند. Winscope تمام وضعیت های مربوط به سرویس سیستم را در یک فایل ردیابی ثبت می کند. با استفاده از رابط کاربری Winscope همراه با فایل ردیابی، میتوانید وضعیت این سرویسها را برای هر فریم انیمیشن، با یا بدون ضبط صفحه، با پخش مجدد، استپ کردن و اشکالزدایی از طریق انتقال بررسی کنید.
سرویس های سیستمی که ردیابی هایی را تولید می کنند که می توانند در Winscope بارگذاری شوند به شرح زیر است:
- سرفیس فلینگر
- WindowManager
- WMShel
- IME
- پرتاب کننده
نمایشگر ردیابی Winscope را اجرا کنید
ردیابی Winscope بخشی از خدمات روی پلتفرم است. این بخش مراحل مورد نیاز برای دانلود، ساخت و اجرای نمایشگر ردیابی Winscope را تشریح می کند.
مراحل زیر را برای تنظیم رایانه شخصی خود برای اجرای ردیاب Winscope دنبال کنید:
- سورس اندروید را دانلود کنید .
به پوشه Winscope بروید:
cd development/tools/winscope
وابستگی ها را با استفاده از:
npm install
برای مشاهده لیستی از دستورات موجود، اجرا کنید:
npm run
با استفاده از: همه اهداف تولید و آزمایش را بسازید:
npm run build:prod
Winscope را با استفاده از:
npm run start
ردیابی را ثبت کنید
میتوانید از طریق Winscope یا از طریق دستورات Android Debug Bridge (adb) ردیابی روی دستگاه بگیرید.
ردیابی روی دستگاه
برای جمعآوری دادهها هنگام ثبت اشکالات مربوط به مشکلات انیمیشن، ردیابی روی دستگاه بگیرید. همه ردیابیهای رابط کاربری با این روش ثبت میشوند، زیرا پیکربندی را نمیتوان سفارشی کرد.
در دستگاه اندرویدی شما:
- گزینه های توسعه دهنده را فعال کنید .
- System Tracing را در قسمت Developer Options انتخاب کنید.
- جمع آوری آثار Winscope را فعال کنید.
- تحت متفرقه :
- پیوست کردن ضبطها به گزارشهای اشکال را فعال کنید.
- نمایش کاشی تنظیمات سریع را فعال کنید.
- به جایی که باید اشکال را تکرار کنید بروید.
برای شروع ضبط، تنظیمات سریع را باز کنید و ضبط ردیابی را انتخاب کنید:
شکل 1. منوی تنظیمات سریع با Record Trace.
فقط مراحل لازم برای تولید مجدد اشکال را اجرا کنید.
برای توقف ضبط، تنظیمات سریع را باز کرده و توقف ردیابی را انتخاب کنید.
گزارش گرفته شده را با استفاده از یکی از گزینه های فهرست شده مانند Gmail، Drive یا BetterBug به اشتراک بگذارید.
ردیابی را از طریق Winscope ثبت کنید
می توانید اثری را با استفاده از Winscope برای توسعه محلی و اشکال زدایی ضبط کنید. Winscope از adb استفاده می کند که از اتصال دستگاه از طریق USB یا Wi-Fi پشتیبانی می کند.
در وینسکوپ:
در صفحه Collect Traces ، روی ADB Proxy کلیک کنید:
شکل 2. ردیابی در Winscope.
پراکسی Winscope ADB Connect را راه اندازی کنید تا ردیابی ها را مستقیماً از مرورگر خود ثبت کنید.
دستور را اجرا کنید:
python3 $ANDROID_BUILD_TOP/development/tools/winscope/src/adb/winscope_proxy.py
برای شروع ضبط، در صفحه جمع آوری ردیابی، اهداف و پیکربندی را انتخاب کنید و روی Start trace کلیک کنید:
شکل 3. ردیابی ها را روی Winscope جمع آوری کنید.
برای توقف ضبط، روی پایان ردیابی کلیک کنید:
شکل 4. پایان ردیابی در وینسکوپ.
همانطور که ابزار ردیابی ها را در رابط کاربری Winscope آپلود می کند، پیام های Fetching and Parsing Proto Files روی صفحه ظاهر می شوند.
با استفاده از Winscope، State Dump را ایجاد کنید
برای گرفتن حالت dump با استفاده از Winscope، در صفحه Collect Traces زبانه Dump را انتخاب کنید و سپس روی Dump state کلیک کنید:
شکل 5. حالت تخلیه در Winscope.
ردیابی از طریق دستورات adb
قبل از اجرای دستورات adb shell
برای هر یک از ردیابی های زیر adb root
اجرا کنید. در پایان ردیابی، فایل های ردیابی در /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 logging را برای گروه های گزارش داده شده فعال کنید:
adb shell cmd window logging enable-text [group...]
غیرفعال کردن Logcat logging برای گروه های گزارش داده شده:
adb shell cmd window logging disable-text [group...]
در WMShel:
شروع ProtoLog:
adb shell dumpsys activity service SystemUIService WMShell
ردیابی انتقال
برای ردیابی انتقال از دستورات زیر استفاده می شود:
در فرآیند system_server
:
شروع یک ردیابی:
adb shell cmd window shell tracing start
توقف یک ردیابی:
adb shell cmd window shell tracing stop
شروع یک ردیابی در WMSell:
adb shell dumpsys activity service SystemUIService WMShell transitions tracing start
توقف ردیابی در WMSell:
adb shell dumpsys activity service SystemUIService WMShell transitions tracing stop
ویرایشگر روش ورودی
دستورات زیر برای ردیابی Input Method Editor (IME) استفاده می شود:
ردیابی IME را برای مشتریان روش ورودی (IM)، سرویس روش ورودی (IMS) و سرویس مدیریت روش ورودی (IMMS) شروع کنید:
adb shell ime tracing start
ردیابی مشتریان IME، IMS و IMMS را شروع کنید:
adb shell ime tracing stop
لایه های SurfaceFlinger
ردیابی لایه SurfaceFlinger از Trace Perfetto برای ضبط استفاده می کند. برای اطلاعات پیکربندی به پیکربندی Trace مراجعه کنید.
مثال زیر از پیکربندی برای ردیابی لایه Soursflinger را مشاهده کنید:
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 از Trace Perfetto برای ضبط استفاده می کند. برای اطلاعات پیکربندی به پیکربندی Trace مراجعه کنید.
مثال زیر از پیکربندی 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 \
ایجاد حالت dump با استفاده از adb
Winscope یک عکس فوری از وضعیت های WindowManager و SurfaceFlinger را از گزارش های باگ می خواند. گزارشهای اشکال، حالتها را بهعنوان فایلهای پروتو جداگانه در پوشه proto
ذخیره میکنند. برای ایجاد حالت dump با استفاده از 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 بارگذاری کنید.
برای تجسم ردیابی های آپلود شده روی View Traces کلیک کنید. برگه های هر ردیابی در پانل بالای پنجره ظاهر می شود. اگر فایل آپلود شده حاوی ردپای مربوطه باشد، یک نمای شناور از ردیاب ضبط شده روی صفحه نمایش پوشیده می شود.
شکل 7. آثار را در Winscope مشاهده کنید.
برای تغییر نام از رابط کاربری در بالاترین پانل پنجره استفاده کنید و ردیابی آپلود شده خود را دانلود کنید یا برای آپلود یک مورد جدید.
با استفاده از ابزار لغزنده زمان در پانل پایین پنجره، در ردیابی ها در طول زمان حرکت کنید. برای پیمایش زمان اضافی، از ویژگی های زیر استفاده کنید، همانطور که در شکل 8 نشان داده شده است:
- برای پیمایش به یک زمان یا رویداد خاص، از مکان نما (لغزنده زمان) یا سمت چپ استفاده کنید و راست فلش ها در کادر نمایش زمان (گوشه سمت چپ پایین)، یا فلش های چپ و راست روی صفحه کلید شما.
- برای نمایش ردپای رنگی انتخاب شده در خط زمانی، از منوی کشویی (سمت چپ نوار لغزنده زمان) استفاده کنید. به طور پیش فرض، سه رد آخر مشاهده شده با استفاده از برگه های ردیابی در جدول زمانی نمایش داده می شوند.
- برای مشاهده ریز همه ردیابی های آپلود شده، از بزرگنمایی استفاده کنید یا بزرگنمایی کنید ابزار (زیر نوار لغزنده زمان)، یا روی صفحه کلید خود اسکرول کنید. برای تنظیم مجدد سطح زوم از دکمه تنظیم مجدد استفاده کنید.
- برای مشاهده گسترده توزیع ردیابی در طول زمان، روی فلش بالا کلیک کنید (گوشه سمت راست پایین).
شکل 8. ناوبری زمان در Winscope.
در نمای گسترش یافته (شکل 9)، برای بازرسی بهتر، بازه های زمانی خاص را انتخاب کرده و بزرگنمایی کنید:
شکل 9. جدول زمانی گسترش یافته در Winscope.
برای بررسی آثار، می توانید وضعیت دستگاه را با ضبط صفحه نمایش مشاهده کنید. برای بررسی یک ردیابی خاص، روی برگه ردیابی مربوطه در پانل بالای ابزار کلیک کنید.
برای ردیابی Surface Flinger ، سه پنل نماهای متفاوتی از ردیابی را در یک دوره زمانی معین نشان میدهند، همانطور که در شکل 10 نشان داده شده است:
شکل 10. ردیابی سطحی فلینگر در وینسکوپ.
نمای لایه ها : نمای سه بعدی از لایه ها در پوشش های مستطیلی. عناصر رابط کاربری زیر مستطیل ها را طوری تنظیم می کنند که عناصر گرافیکی را از نظر موقعیت، اندازه، تبدیل و ترتیب z نمایش دهند:
- نوار لغزنده Rotation (بالا سمت چپ نمای لایه ها) مستطیل های لایه ای را می چرخاند تا آنها را در زوایای انتخاب شده مشاهده کنید.
- نوار لغزنده Spacing (بالا سمت راست نمای لایه ها) فاصله بین لایه ها را برای ایجاد نمای ترکیبی انتخابی تنظیم می کند.
- ابزارهای بزرگنمایی (بالا سمت راست نمای لایه ها) بزرگنمایی می کنند و بزرگنمایی کنید برای بازرسی بهتر وارد لایه ها شوید.
- دکمه ریست (بالا سمت راست نمای لایه ها) تنظیمات دوربین را به نمای اصلی باز می گرداند.
- مستطیل ها را بکشید تا بزرگنمایی بهتر انجام شود.
نمای سلسله مراتبی : سلسله مراتب کامل لایه ها.
- فقط قابل مشاهده است (بالا سمت راست نمای سلسله مراتب)، هنگامی که انتخاب می شود، لایه های نامرئی را از سلسله مراتب پنهان می کند تا به تجسم عناصر روی صفحه کمک کند.
- Flat (بالای سمت راست نمای سلسله مراتبی)، هنگامی که انتخاب می شود، سلسله مراتب را به صورت یک لیست مسطح از لایه ها نشان می دهد.
- نمایش Diff (بالا سمت چپ نمای سلسله مراتب) فقط در هنگام انتقال حالت انتخاب می شود. وقتی انتخاب شد، ابزار وضعیت فعلی را با حالت قبلی مقایسه می کند. یک عنصر جدید با رنگ سبز، یک عنصر حذف شده با رنگ قرمز و یک عنصر اصلاح شده با رنگ آبی مشخص می شود.
نمای خصوصیات : ویژگی های لایه انتخاب شده. پانل بالای نمای Properties شامل اطلاعاتی در مورد تنها خصوصیات کلیدی مانند دید ، هندسه و بافر است. پانل پایینی نمای Properties حاوی یک Proto Dump از تمام ویژگی ها است.
- چک باکس Show Diff (بالا سمت چپ نمای Properties) مانند نمای سلسله مراتبی عمل می کند.
- نمایش پیشفرضها (بالا سمت چپ نمای Properties)، وقتی انتخاب شد، مقادیر پروتو پیشفرض را در Proto Dump نمایش میدهد. به طور پیش فرض، این مقادیر در Proto Dump فهرست نشده اند. مقادیر پروتو پیش فرض از تعریف فیلد proto گرفته شده است. اگر یک فیلد پروتو دارای مقدار پیشفرض غیر تهی نباشد، مقادیر پروتو پیشفرض نشان داده شده عبارتند از:
- رشته ها: پوچ
- اعداد: 0
- مقادیر بولی: نادرست
- اشیاء: پوچ
انتخاب بین سه نما و ضبط صفحه همگام میشود، یعنی وقتی به نقطهای از زمان حرکت میکنید، همه ردیابیها به طور همزمان بهروزرسانی میشوند. برای دیدن خصوصیات یک لایه، لایه را با کلیک بر روی آن در نمای سلسله مراتبی یا با کلیک بر روی مستطیل مربوطه در نمای Properties انتخاب کنید. یک مستطیل بنفش نشان می دهد که اثری از نمای به این لایه وصل شده است. با کلیک بر روی یک لایه بنفش ، UI حرکت می کند تا به برگه Trace Trace مربوطه تغییر کند.
برای ردیابی Window Manager ، سه پانل در یک دوره زمانی معین ، نمایش های مختلفی از ردیابی را نشان می دهد ، همانطور که در شکل 11 نشان داده شده است:
- نمای ویندوز : نمای سه بعدی از لایه ها.
- نمای سلسله مراتبی : سلسله مراتب کامل لایه ها.
- نمای Properties شامل یک Proto Dump از همه خواص است.
انتخاب بین سه نما و ضبط صفحه همگام میشود، یعنی وقتی به نقطهای از زمان حرکت میکنید، همه ردیابیها به طور همزمان بهروزرسانی میشوند.
شکل 11. ردیابی Window Manager در Winscope.
برای ردیابی تراکنشها ، تراکنشهای بین Surface Flinger و Window Manager در قالب جدولی ارائه میشوند که با شناسهها، نوع و متن نمایشدادهشده قابل جستجو است، همراه با نمای ویژگیهایی که پروتو dump را نشان میدهد. انتخاب بین دو نمایش و ضبط صفحه هماهنگ شده است:
شکل 12. ردیابی تراکنش ها در Winscope.
برای ردیابی های ProtoLog ، اطلاعات در قالب جدول ارائه می شود که با برچسب ها، فایل های منبع و متن قابل جستجو است:
شکل 13. ردیابی ProtoLog در Winscope.
برای Traces Transitions ، فهرستی از انتقال ها با شناسه، نوع، زمان ارسال، مدت زمان و وضعیت همراه با ویژگی های انتقال انتخاب شده نمایش داده می شود:
شکل 14. ردیابی انتقال در Winscope.