إنشاء سجلات التتبع من خلال قياس حالة التطبيق

لإنشاء تتبُّع لطريقة تنفيذ تطبيقك، يمكنك قياس أداء تطبيقك. استخدام Debug الصف. إن قياس أداء التطبيق بهذه الطريقة يمنحك مزيدًا من التحكم في الوقت المناسب يبدأ الجهاز ويتوقف عن تسجيل معلومات التتبُّع. يحفظ الجهاز أيضًا سجلات التتبع باستخدام الأسماء التي تحددها، حتى تتمكن من التعرّف على كل سجل بسهولة لاحقًا. يمكنك بعد ذلك عرض كل سجل تتبع باستخدام "استوديو Android" أداة تحليل وحدة المعالجة المركزية (CPU):

يمكنك أيضًا بدء التتبُّع وإيقافه في محلّل وحدة المعالجة المركزية (CPU) بدون قياس رمز التطبيق.

قبل البدء في إنشاء سجلّات التتبُّع، تأكَّد من أنّ تطبيقك أضاف منطقًا إلى حفظ سجلات التتبع في الإعدادات الخاصة بالتطبيق الدليل.

قياس أداء تطبيقك

لإنشاء سجلّات التتبُّع، عليك طلب startMethodTracing(). حيث تريد أن يبدأ النظام في تسجيل بيانات التتبع.

وفي المكالمة، يمكنك تحديد اسم .trace، ويحفظه النظام في حزمة خاصة بالحزمة الذي يستهدف بيانات التطبيق الدائمة على الجهاز المستهدف، وهو نفس الدليل الذي يتم عرضه بواسطة getExternalFilesDir() وتتوفّر في دليل ~/sdcard/ على معظم الأجهزة يحتوي هذا الملف على بيانات تتبُّع الطريقة الثنائية وجدول ربط يحتوي على سلسلة محادثات. وأسماء الطرق. لإيقاف التتبّع، يُرجى الاتصال stopMethodTracing()

يبدأ النموذج التالي ويتوقف عن تسجيل سجلّ تتبُّع بالاسم. sample.trace:

Kotlin

// Starts recording a trace log with the name you provide. For example, the
// following code tells the system to start recording a .trace file to the
// device with the name "sample.trace".
Debug.startMethodTracing("sample")

// The system begins buffering the generated trace data, until your
// application calls <code><a href="/reference/android/os/Debug.html#stopMethodTracing()">stopMethodTracing()</a></code>, at which time it writes
// the buffered data to the output file.
Debug.stopMethodTracing()

Java

// Starts recording a trace log with the name you provide. For example, the
// following code tells the system to start recording a .trace file to the
// device with the name "sample.trace".
Debug.startMethodTracing("sample");
...
// The system begins buffering the generated trace data, until your
// application calls <code><a href="/reference/android/os/Debug.html#stopMethodTracing()">stopMethodTracing()</a></code>, at which time it writes
// the buffered data to the output file.
Debug.stopMethodTracing();

يُرجى ملاحظة أنّه إذا استدعِ التطبيق startMethodTracing() مرة أخرى بدون تغيير اسم سجل التتبُّع، يستبدل السجل الحالي تم حفظه على الجهاز. التعرُّف على طريقة تغيير اسم كل عملية تتبُّع ديناميكيًا ، انتقِل إلى القسم الذي يتناول حفظ سجلات متعددة.

إذا وصل النظام إلى الحد الأقصى لحجم للمخزن المؤقت قبل الاتصال stopMethodTracing(), يتوقف النظام عن التتبع ويرسل إشعارًا إلى وحدة التحكم. تعمل الطرق التي تبدأ وتوقف عمليات التتبع عبر عملية تطبيقك بالكامل. الذي يمكنك الاتصال startMethodTracing() في سجلّ نشاطك onCreate(Bundle) وإجراء طلب على stopMethodTracing() في onDestroy() من هذا النشاط .

تجدر الإشارة إلى أنّ تطبيقك يعمل بشكل أبطأ عند تفعيل التحليل. أي أنك عدم استخدام بيانات التحليل لتحديد التوقيتات المطلقة (مثل " يستغرق تشغيل "foo()" 2.5 ثانية"). يتم عرض معلومات التوقيت في سجلات التتبع إلا عند مقارنتها بسجلات التتبع السابقة، لتتمكن من معرفة ما إذا كانت التغييرات إلى جعل تطبيقك أسرع أو أبطأ.

عند نشر التطبيقات على الأجهزة التي تعمل بنظام التشغيل Android 5.0 (المستوى 21 من واجهة برمجة التطبيقات) والإصدارات الأحدث، يمكنك: استخدام التحليل المستند إلى العينات لتحليل الأداء مع تأثير أقل في وقت التشغيل. إلى تمكين تحليل نموذج، استدعاء startMethodTracingSampling() (بدلاً من استدعاء startMethodTracing()) باستخدام عيّنة محدّدة الفاصل. يجمع النظام العينات بشكل دوري إلى أن يتم استدعاء تطبيقك stopMethodTracing()

حفظ سجلات متعددة

إذا بدأ تطبيقك عملية تتبُّع أو أوقفها عدة مرات بدون تحديد اسمًا جديدًا لسجل التتبع، يستبدل الجهاز سجل التتبع القديم جديد، أي الاحتفاظ بأحدث سجلّ تتبُّع فقط. لحفظ عدة عناصر إلى جهازك، وإعادة تسمية سجل التتبع ديناميكيًا في كل مرة يتصل برقم startMethodTracing(). يستخدم النموذج أدناه SimpleDateFormat لتضمين التاريخ والوقت الحاليين عند تسمية كل سجل تتبع:

Kotlin

// Uses the <code><a href="/reference/java/text/SimpleDateFormat.html">SimpleDateFormat</a></code> class to create a String with
// the current date and time.
val dateFormat: DateFormat = SimpleDateFormat("dd_MM_yyyy_hh_mm_ss", Locale.getDefault())
val logDate: String = dateFormat.format(Date())
// Applies the date and time to the name of the trace log.
Debug.startMethodTracing("sample-$logDate")

Java

// Uses the <code><a href="/reference/java/text/SimpleDateFormat.html">SimpleDateFormat</a></code> class to create a String with
// the current date and time.
SimpleDateFormat dateFormat =
        new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss", Locale.getDefault());
String logDate = dateFormat.format(new Date());
// Applies the date and time to the name of the trace log.
Debug.startMethodTracing(
        "sample-" + logDate);

الوصول إلى سجلّات التتبُّع على الجهاز

بعد أن ينشئ النظام سجلّ التتبُّع على جهازك، يمكنك الوصول إلى الملف. باستخدام إحدى الطرق التالية:

  • استخدام "مستكشف الأجهزة" لفتح "مستكشف الأجهزة"، انقر على عرض > نوافذ الأدوات > "مستكشف الأجهزة" (أو انقر على مستكشف الأجهزة في شريط نافذة الأدوات). كما هو موضح في الشكل 1 يمكنك تحديد موقع الملفات البالغ عددها .trace من خلال الانتقال إلى صفحة الدليل الخاص بالحزمة.

    الشكل 1. تحديد موقع سجلّات التتبُّع باستخدام "مستكشف الأجهزة"

  • انسخ الملف إلى جهازك المحلي باستخدام الأمر adb pull. ينسخ الأمر أدناه سجلّ تتبُّع باسم "sample.trace" من الجهاز إلى الدليل ~/Documents/trace-logs/ لجهازك المحلي.

    adb pull path-on-device/sample.trace ~/Documents/trace-logs/

يمكنك بعد ذلك استيراد ملف التتبُّع باستخدام محلّل وحدة المعالجة المركزية (CPU).