تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تكون حِزم استدعاء الدوال البرمجية مفيدة في تحديد نقاط النشاط العالي لوحدة المعالجة المركزية، أو أقسام الرمز التي يستغرق تنفيذها وقتًا طويلاً. تساعدك حِزم استدعاء الدوال البرمجية في فهم الجزء الذي تم تنفيذه من الرمز البرمجي وسبب استدعائه.
بالإضافة إلى المخططَين الزمنيَين استخدام وحدة المعالجة المركزية والتفاعلات، يعرض قسم سلاسل التنفيذ اللقطات لكل عملية استدعاء يجريها تطبيقك والنظام. في ما يلي بعض النصائح للتنقّل في عيّنة سلسلة استدعاء الدوال البرمجية:
وسِّع سلسلة المحادثات التي تهمّك واستخدِم اختصارات لوحة المفاتيح للتنقّل بين إطارات تسلسل استدعاء الدوال البرمجية. انقر على إطار تسلسل استدعاء الدوال البرمجية للحصول على تفاصيل حول الحدث والمكالمات ذات الصلة في جزء التحليل.
للتصفية حسب أنواع معيّنة من إطارات سلسلة استدعاء الدوال البرمجية، انقر على تصغير الإطارات وضع علامة في مربّعات أنواع الإطارات التي تريد إخفاءها. يؤدي تصغير اللقطات إلى إزالتها من قسمَي سلاسل المحادثات والتحليل. استنادًا إلى التحقيق الذي تجريه، قد تحتاج إلى تصغير إطارات من آلة Java الافتراضية (مثل android::AndroidRuntime::start وart::{...}) ونواة النظام (مثل [kernel.kallsyms]+{offset}). يتوافق ذلك عادةً مع تصغير الإطارات ذات الصلة بـ [kernel.kallsyms] و/apex/ و/system/*.
بما أنّ برنامج Java/Kotlin يتم تنفيذه عادةً من خلال آلة Java الافتراضية، فعندما يجمع Android Studio سلسلة استدعاءات لبرنامج Java/Kotlin، تتضمّن سلسلة الاستدعاءات عادةً رموز Java/Kotlin، بالإضافة إلى الرموز الأصلية المطلوبة لتشغيل البرنامج نفسه ولتواصل البرنامج مع النظام والأجهزة.
للانتقال إلى رمز المصدر المرتبط بإطار تسلسل استدعاء الدوال البرمجية، انقر بزر الماوس الأيمن على الإطار وانقر على الانتقال إلى رمز المصدر.
لتسليط الضوء على إطار تسلسل استدعاء الدوال البرمجية المرتبط بحدث معيّن في جدول الأحداث، انقر على الحدث.
يستخدم "استوديو Android" داخليًا أداة simpleperf لتتبُّع الرمز البرمجي الأصلي لتطبيقك. إذا أردت تحديد خيارات إضافية لأداة Simpleperf، مثل أخذ عيّنات من وحدات المعالجة المركزية (CPU) لأجهزة معيّنة أو تحديد مدة أخذ العيّنات بدقة عالية، يمكنك استخدام Simpleperf من سطر الأوامر.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Sample the callstack\n\nCallstacks are useful for identifying *CPU hot spots*, or sections of code that\ntake a long time to execute. Callstacks help you understand which part of the\ncode has been executed, and why it was invoked.\n| **Note:** To sample the callstack, you must deploy your app to a device running Android 8.0 (API level 26) or higher.\n\nCallstack sample overview\n-------------------------\n\nTo sample the callstack,\n[select the **Find CPU Hotspots (Callstack Sample)** task](/studio/profile#start-profiling)\nfrom the Android Studio Profiler **Home** tab. After the recording is parsed you\nsee the following visuals:\n\nTo supplement the\n[**CPU Usage** and **Interactions** timelines](/studio/profile/cpu-profiler),\nthe **Threads** section shows frames for every call that your app and the system\nmakes. Here are some tips for navigating the callstack sample:\n\n- Expand the thread of interest and use [keyboard shortcuts](/studio/profile/cpu-profiler#ui-shortcuts) to navigate the stack frames. Click a stack frame to get details about the event and related calls in the **Analysis** pane.\n- To filter to certain types of stack frames, click **Collapse frames** and check the frame types you want to hide. Collapsing frames removes them from both the **Threads** and **Analysis** sections. Depending on your investigation, you might want to collapse frames from the Java virtual machine (for example `android::AndroidRuntime::start` and `art::{...}`), and the system kernel (for example `[kernel.kallsyms]+{offset}`). Usually this corresponds to collapsing frames related to `[kernel.kallsyms]`, `/apex/`, and `/system/*`.\n\nBecause a Java/Kotlin program typically executes through a Java virtual machine,\nwhen Android Studio collects the callstack for a Java/Kotlin program, the\ncallstack usually includes not just the Java/Kotlin code but also the native\ncode required to run the program itself and for the program to talk with the\nsystem and hardware.\n\n- To jump to the source code associated with a stack frame, right-click the frame and click **Jump to source**.\n- To highlight the stack frame associated with an event in the event table, click the event.\n\nFor information about the other visuals, see\n[Record a system trace](/studio/profile/cpu-profiler) and the\n[chart glossary](/studio/profile/chart-glossary/flame-chart).\n\nSample native code using the command line\n-----------------------------------------\n\nInternally, Android Studio uses [simpleperf](/ndk/guides/simpleperf) to trace\nyour app's native code. If you want to specify additional options for\nSimpleperf, such as sampling specific device CPUs or specifying sampling\ndurations at a high accuracy, you can\n[use simpleperf from the command line](https://android.googlesource.com/platform/system/extras/+/master/simpleperf/doc/README.md)."]]