پشتههای تماس برای شناسایی نقاط داغ پردازنده یا بخشهایی از کد که اجرای آنها زمان زیادی میبرد مفید هستند. Callstacks به شما کمک می کند بفهمید کدام قسمت از کد اجرا شده است و چرا فراخوانی شده است.
نمای کلی نمونه Callstack
برای نمونه گیری از پشته تماس، وظیفه Find CPU Hotspots (Callstack Sample) را از تب Android Studio Profiler Home انتخاب کنید. پس از تجزیه ضبط، تصاویر زیر را مشاهده می کنید:
برای تکمیل جدولهای زمانی استفاده و تعاملات CPU ، بخش Threads فریمهایی را برای هر تماسی که برنامه و سیستم شما برقرار میکند نشان میدهد. در اینجا چند نکته برای پیمایش نمونه callstack وجود دارد:
- رشته مورد علاقه را گسترش دهید و از میانبرهای صفحه کلید برای پیمایش فریم های پشته استفاده کنید. روی یک قاب پشته کلیک کنید تا جزئیات مربوط به رویداد و تماسهای مرتبط را در قسمت تجزیه و تحلیل دریافت کنید.
- برای فیلتر کردن انواع خاصی از قابهای پشتهای، روی جمع کردن فریمها کلیک کنید و انواع قابهایی را که میخواهید پنهان کنید بررسی کنید. فرو ریختن فریم ها آنها را از هر دو بخش Threads و Analysis حذف می کند. بسته به تحقیق شما، ممکن است بخواهید فریمهای ماشین مجازی جاوا (به عنوان مثال
android::AndroidRuntime::start
وart::{...}
) و هسته سیستم (به عنوان مثال[kernel.kallsyms]+{offset}
جمع کنید.[kernel.kallsyms]+{offset}
). معمولاً این مربوط به فریم های در حال جمع شدن مربوط به[kernel.kallsyms]
،/apex/
و/system/*
است.
از آنجایی که یک برنامه جاوا/کاتلین معمولاً از طریق یک ماشین مجازی جاوا اجرا میشود، زمانی که Android Studio پشته تماس را برای یک برنامه جاوا/کاتلین جمعآوری میکند، معمولاً callstack نه تنها کد جاوا/کاتلین، بلکه کد بومی مورد نیاز برای اجرای خود برنامه را نیز شامل میشود. برای اینکه برنامه با سیستم و سخت افزار صحبت کند.
- برای رفتن به کد منبع مرتبط با یک قاب پشته، روی قاب کلیک راست کرده و روی «پرش به منبع» کلیک کنید.
- برای برجسته کردن قاب پشته مرتبط با یک رویداد در جدول رویداد، روی رویداد کلیک کنید.
برای اطلاعات در مورد سایر تصاویر، به ثبت ردیابی سیستم و واژه نامه نمودار مراجعه کنید.
نمونه کد بومی با استفاده از خط فرمان
در داخل، Android Studio از simpleperf برای ردیابی کد اصلی برنامه شما استفاده می کند. اگر میخواهید گزینههای اضافی را برای Simpleperf مشخص کنید، مانند نمونهبرداری از CPUهای دستگاه خاص یا تعیین مدت زمان نمونهبرداری با دقت بالا، میتوانید از simpleperf از خط فرمان استفاده کنید .