ردیابی را ثبت کنید

برای شروع ضبط یک ردیابی، یک پیکربندی ضبط را از یکی از منوهای کشویی بالا یا زیر نمایه CPU انتخاب کنید و روی ضبط کلیک کنید.

شکل 1. CPU Profiler وضعیت، مدت زمان و نوع ضبط در حال انجام را نمایش می دهد.

با برنامه خود تعامل داشته باشید و پس از اتمام کار روی Stop کلیک کنید. نمایه ساز به طور خودکار اطلاعات ردیابی خود را در قسمت trace نمایش می دهد، همانطور که در شکل 2 نشان داده شده است.

شکل 2. CPU Profiler پس از ثبت ردیابی متد.

  1. محدوده انتخاب شده: بخشی از زمان ضبط شده را برای بازرسی در صفحه ردیابی تعیین می کند. هنگامی که برای اولین بار یک ردیابی را ضبط می کنید، CPU Profiler به طور خودکار کل طول ضبط شما را در جدول زمانی CPU انتخاب می کند. برای بازرسی داده های ردیابی فقط برای بخشی از محدوده زمانی ثبت شده، لبه های ناحیه برجسته شده را بکشید.
  2. بخش تعامل: تعامل کاربر و رویدادهای چرخه عمر برنامه را در یک جدول زمانی نمایش می دهد.
  3. بخش Threads: فعالیت وضعیت رشته (مانند در حال اجرا، خوابیدن و غیره) و نمودار تماس (یا نمودار رویداد ردیابی در System Trace) را برای هر رشته در طول یک خط زمانی نمایش می دهد.
    • از میانبرهای ماوس و صفحه کلید برای پیمایش در جدول زمانی استفاده کنید.
    • روی نام رشته دوبار کلیک کنید یا Enter را فشار دهید در حالی که یک رشته برای بزرگ کردن یا جمع کردن یک موضوع انتخاب شده است.
    • یک رشته را برای مشاهده اطلاعات اضافی در بخش تجزیه و تحلیل انتخاب کنید. Shift یا Ctrl (Command در مک) را برای انتخاب رشته های متعدد نگه دارید.
    • یک فراخوانی متد (یا ردیابی رویداد در System Trace) را انتخاب کنید تا اطلاعات اضافی را در قسمت Analysis مشاهده کنید.
  4. صفحه تجزیه و تحلیل: داده های ردیابی را برای محدوده زمانی و رشته یا فراخوانی روشی که انتخاب کرده اید نمایش می دهد. در این بخش، می‌توانید نحوه مشاهده هر ردیابی پشته (با استفاده از زبانه‌های تجزیه و تحلیل) و نحوه اندازه‌گیری زمان اجرا (با استفاده از منوی کشویی مرجع زمان) را انتخاب کنید.
  5. برگه‌های صفحه تجزیه و تحلیل: نحوه نمایش جزئیات ردیابی را انتخاب کنید. برای جزئیات در مورد هر گزینه، به بررسی ردیابی ها مراجعه کنید.
  6. منوی مرجع زمان: یکی از موارد زیر را برای تعیین نحوه اندازه‌گیری اطلاعات زمان‌بندی هر تماس انتخاب کنید (فقط در Sample/Trace Java Methods پشتیبانی می‌شود):
    • زمان ساعت دیواری: اطلاعات زمان بندی زمان واقعی سپری شده را نشان می دهد.
    • Thread time: اطلاعات زمان‌بندی نشان‌دهنده زمان واقعی سپری شده منهای هر بخشی از آن زمان است که رشته منابع CPU را مصرف نمی‌کند. برای هر فراخوانی، زمان نخ آن همیشه کمتر یا مساوی زمان ساعت دیواری آن است. استفاده از Thread Time به شما درک بهتری از میزان مصرف واقعی CPU یک رشته توسط یک روش یا عملکرد داده شده می دهد.
  7. فیلتر: داده ها را بر اساس تابع، روش، کلاس یا نام بسته ردیابی می کند. به عنوان مثال، اگر می خواهید به سرعت داده های ردیابی مربوط به یک تماس خاص را شناسایی کنید، نام را در قسمت جستجو تایپ کنید. در برگه نمودار شعله ، روی پشته‌های تماس که شامل تماس، بسته یا کلاسی است که با عبارت جستجو مطابقت دارد، تأکید می‌شود. در برگه های بالا به پایین و پایین به بالا ، آن پشته های تماس بر سایر نتایج ردیابی اولویت دارند. همچنین می توانید با علامت زدن کادر مناسب در کنار فیلد جستجو، گزینه های زیر را فعال کنید:
    • Regex: برای گنجاندن عبارات منظم در جستجوی خود، از این گزینه استفاده کنید.
    • Match case: اگر جستجوی شما به حروف بزرگ و کوچک حساس است، از این گزینه استفاده کنید.
نکته: هنگام بررسی جدول زمانی Threads ، میانبرهای زیر در دسترس هستند:
  • بزرگنمایی: W را فشار دهید یا چرخ ماوس را در حالی که Ctrl (فرمان در مک) را نگه داشته اید حرکت دهید.
  • کوچک نمایی: S را فشار دهید یا در حالی که Ctrl (Command در Mac) را نگه داشته اید، چرخ ماوس را به سمت عقب حرکت دهید.
  • حرکت به چپ: A را فشار دهید یا در حالی که Space را نگه داشته اید، ماوس را به سمت راست بکشید.
  • حرکت سمت راست: D را فشار دهید یا در حالی که Space را نگه داشته اید، ماوس را به سمت چپ بکشید.
  • گسترش یا کوچک کردن یک رشته: روی نام رشته دوبار کلیک کنید یا در حالی که یک رشته انتخاب شده است Enter را فشار دهید.

یک پیکربندی ضبط را انتخاب کنید

قبل از شروع ضبط اطلاعات ردیابی، پیکربندی ضبط مناسب را برای اطلاعات پروفایلی که می خواهید ضبط کنید انتخاب کنید:

  • روش های نمونه جاوا: پشته تماس برنامه شما را در فواصل زمانی مکرر در طول اجرای کد مبتنی بر جاوا برنامه شما ضبط می کند. نمایه‌ساز مجموعه‌ای از داده‌های گرفته شده را برای استخراج اطلاعات زمان‌بندی و استفاده از منابع در مورد اجرای کد مبتنی بر جاوا برنامه شما مقایسه می‌کند.

    یک مسئله ذاتی ردیابی مبتنی بر نمونه برداری این است که اگر برنامه شما پس از ضبط پشته تماس، متدی را وارد کرده و قبل از ضبط بعدی از روش خارج شود، فراخوانی روش توسط نمایه ساز ثبت نمی شود. اگر به روش های ردیابی با چنین چرخه عمر کوتاهی علاقه دارید، باید از ردیابی ابزاری استفاده کنید.

  • ردیابی روش‌های جاوا: برنامه شما را در زمان اجرا ابزار می‌کند تا در ابتدا و انتهای هر فراخوانی، یک مهر زمانی ثبت کند. مهرهای زمانی جمع‌آوری شده و برای تولید داده‌های ردیابی روش، از جمله اطلاعات زمان‌بندی و استفاده از CPU، مقایسه می‌شوند.

    توجه داشته باشید که سربار مرتبط با ابزار دقیق هر روش بر عملکرد زمان اجرا تأثیر می گذارد و ممکن است بر داده های پروفایل تأثیر بگذارد. این حتی برای روش هایی با چرخه عمر نسبتا کوتاه بیشتر قابل توجه است. علاوه بر این، اگر برنامه شما تعداد زیادی روش را در مدت زمان کوتاهی اجرا کند، نمایه ساز ممکن است به سرعت از حد مجاز اندازه فایل خود فراتر رود و نتواند داده های ردیابی بیشتری را ثبت کند.

  • توابع نمونه C/C++: ردپای نمونه برداری شده از رشته های اصلی برنامه شما را می گیرد. برای استفاده از این پیکربندی، باید برنامه خود را روی دستگاهی با Android 8.0 (سطح API 26) یا بالاتر اجرا کنید.

    در داخل، این پیکربندی از simpleperf برای ردیابی کد اصلی برنامه شما استفاده می کند. اگر می‌خواهید گزینه‌های اضافی را برای simpleperf مشخص کنید، مانند نمونه‌برداری از CPUهای دستگاه خاص یا تعیین مدت زمان نمونه‌برداری با دقت بالا، می‌توانید از simpleperf از خط فرمان استفاده کنید .

  • ردیابی تماس های سیستمی: جزئیات دقیقی را ضبط می کند که به شما امکان می دهد نحوه تعامل برنامه خود با منابع سیستم را بررسی کنید. می‌توانید زمان‌بندی‌ها و مدت‌زمان‌های دقیق حالت‌های رشته خود را بررسی کنید، نقاط ضعف CPU را در همه هسته‌ها تجسم کنید، و رویدادهای ردیابی سفارشی را برای تجزیه و تحلیل اضافه کنید. چنین اطلاعاتی می تواند هنگام عیب یابی مشکلات عملکرد بسیار مهم باشد. برای استفاده از این پیکربندی، باید برنامه خود را روی دستگاهی با Android نسخه 7.0 (سطح API 24) یا بالاتر نصب کنید.

    در حین استفاده از این پیکربندی ردیابی، می‌توانید با ابزار دقیق کد خود، روال‌های کد مهم را در جدول زمانی نمایه‌گر علامت‌گذاری کنید. برای ابزارسازی کد C/C++، از API ردیابی بومی ارائه شده توسط trace.h استفاده کنید. برای ابزارسازی کد جاوا، از کلاس Trace استفاده کنید. برای اطلاعات بیشتر، به ابزار کد برنامه خود مراجعه کنید.

    این پیکربندی ردیابی بر روی systrace ساخته شده است. می توانید از ابزار خط فرمان systrace برای تعیین گزینه هایی فراتر از موارد ارائه شده در CPU Profiler استفاده کنید . داده های اضافی در سطح سیستم ارائه شده توسط systrace می تواند به شما در بازرسی فرآیندهای سیستم بومی و عیب یابی فریم های افت یا تاخیر کمک کند.

    در دستگاه‌های دارای Android 9 (سطح API 28) یا بالاتر، می‌توانید از یک برنامه سیستمی به نام System Tracing برای ضبط ردیابی‌های سیستم در دستگاه استفاده کنید.

یک پیکربندی ضبط را ایجاد، ویرایش یا مشاهده کنید

پیکربندی‌های ضبط را در کادر گفتگوی تنظیمات ضبط CPU ایجاد، ویرایش و مشاهده می‌کنید، که با انتخاب ویرایش تنظیمات از منوی کشویی تنظیمات ضبط در بالای نمایه‌گر CPU، آن را باز می‌کنید.

برای مشاهده تنظیمات یک پیکربندی ضبط موجود، آن را در قسمت سمت چپ کادر گفتگوی تنظیمات ضبط CPU انتخاب کنید.

برای ایجاد یک پیکربندی ضبط جدید، موارد زیر را انجام دهید:

  1. روی افزودن کلیک کنید در سمت چپ بالای دیالوگ. این یک پیکربندی جدید با برخی تنظیمات پیش فرض ایجاد می کند.
  2. پیکربندی خود را نام ببرید
  3. یک فناوری ردیابی را انتخاب کنید.
  4. برای تنظیمات ضبط نمونه برداری شده، فاصله نمونه برداری را بر حسب میکروثانیه (μs) مشخص کنید. این مقدار زمان بین هر نمونه از پشته تماس برنامه شما را نشان می دهد. هر چه فاصله زمانی که مشخص می کنید کمتر باشد، سریعتر به محدودیت اندازه فایل برای داده های ضبط شده می رسید.
  5. محدودیت اندازه فایل را به مگابایت (MB) برای داده های ضبط شده که در دستگاه متصل نوشته شده است، مشخص کنید. وقتی ضبط را متوقف می کنید، Android Studio این داده ها را تجزیه می کند و در پنجره نمایه ساز نمایش می دهد. بنابراین، اگر محدودیت را افزایش دهید و حجم زیادی از داده را ضبط کنید، Android Studio زمان بیشتری برای تجزیه فایل طول می کشد و ممکن است پاسخگو نباشد.

    توجه: اگر از دستگاه متصلی استفاده می‌کنید که دارای Android 8.0 (سطح API 26) یا بالاتر است، هیچ محدودیتی در اندازه فایل داده‌های ردیابی وجود ندارد و این مقدار نادیده گرفته می‌شود. با این حال، هنوز باید مراقب باشید که دستگاه پس از هر بار ضبط چه مقدار داده جمع‌آوری می‌کند—Android Studio ممکن است در تجزیه فایل‌های ردیابی بزرگ با مشکل مواجه شود. برای مثال، اگر در حال ضبط یک ردیابی نمونه با فاصله نمونه برداری کوتاه یا یک ردیابی ابزاری هستید در حالی که برنامه شما روش های زیادی را در مدت زمان کوتاهی فراخوانی می کند، به سرعت فایل های ردیابی بزرگی تولید خواهید کرد.

  6. برای پذیرش تغییرات و ادامه ایجاد تغییرات در تنظیمات دیگر، روی اعمال کلیک کنید. برای پذیرش همه تغییرات اعمال شده و بستن کادر گفتگو، روی OK کلیک کنید.

فعالیت CPU را با Debug API ضبط کنید

می‌توانید از Debug API استفاده کنید تا به برنامه خود توانایی شروع و توقف ضبط فعالیت CPU را در CPU Profiler بدهید.

وقتی برنامه شما startMethodTracing(String tracePath) را صدا می‌زند، CPU Profiler شروع به ضبط می‌کند، و وقتی برنامه شما stopMethodTracing() را می‌خواند، CPU Profiler ضبط را متوقف می‌کند. هنگام ضبط فعالیت CPU که با استفاده از این API فعال می شود، نمایه ساز CPU Debug API را به عنوان پیکربندی فعال ضبط CPU نشان می دهد.

برای کنترل ضبط فعالیت CPU با Debug API، برنامه ابزاردار خود را در دستگاهی با Android 8.0 (سطح API 26) یا بالاتر اجرا کنید. ضبط آغاز شده با API در برنامه‌های نمایه‌پذیر پشتیبانی می‌شود، اما پروفایل‌کنندگان Android Studio برای نمایش وضعیت ضبط در رابط کاربری به یک برنامه قابل اشکال‌زدایی نیاز دارند.

مهم: Debug API برای شروع و توقف ضبط فعالیت CPU، مانند دکمه‌های رابط کاربری گرافیکی CPU Profiler و تنظیم در پیکربندی ضبط برای ضبط خودکار هنگام راه‌اندازی برنامه، به‌طور جداگانه از سایر ابزارها در نظر گرفته شده است.

با توجه به محدودیت اندازه بافر 8 مگابایت، روش startMethodTracing(String tracePath) در Debug API برای فواصل کوتاه یا سناریوهایی طراحی شده است که شروع/توقف دستی ضبط سخت است. برای مدت‌های طولانی‌تر ضبط، از رابط کاربری پروفایلر در Android Studio استفاده کنید.

برای اطلاعات بیشتر، به ایجاد گزارش‌های ردیابی با ابزارسازی برنامه خود مراجعه کنید.

ضبط فعالیت CPU در هنگام راه اندازی برنامه

برای شروع ضبط خودکار فعالیت CPU در هنگام راه‌اندازی برنامه، موارد زیر را انجام دهید:

  1. Run > Edit Configurations را انتخاب کنید.
  2. در برگه پروفایل ، کادر کنار شروع ضبط ردیابی روش هنگام راه‌اندازی را علامت بزنید.
  3. یک پیکربندی ضبط CPU را از منو انتخاب کنید.
  4. روی Apply کلیک کنید.
  5. با انتخاب Run > Profile، برنامه خود را روی دستگاهی با Android 8.0 (سطح API 26) یا بالاتر اجرا کنید.