আপনার অ্যাপের সাহায্যে ট্রেস লগ তৈরি করুন

আপনার অ্যাপের এক্সিকিউশনের একটি পদ্ধতির ট্রেস তৈরি করতে, আপনি Debug ক্লাস ব্যবহার করে আপনার অ্যাপটিকে ইনস্ট্রুমেন্ট করতে পারেন। আপনার অ্যাপকে এইভাবে ইন্সট্রুমেন্ট করা আপনাকে ঠিক কখন ডিভাইসটি শুরু হয় এবং ট্রেসিং তথ্য রেকর্ড করা বন্ধ করে তার উপর আরও নিয়ন্ত্রণ দেয়। ডিভাইসটি আপনার নির্দিষ্ট করা নামগুলি ব্যবহার করে আপনার ট্রেস লগগুলিও সংরক্ষণ করে, যাতে আপনি পরবর্তীতে প্রতিটি লগ সহজেই সনাক্ত করতে পারেন৷ তারপর আপনি অ্যান্ড্রয়েড স্টুডিও সিপিইউ প্রোফাইলার ব্যবহার করে প্রতিটি ট্রেস লগ দেখতে পারেন।

আপনি আপনার অ্যাপের কোড যন্ত্র ছাড়াই CPU প্রোফাইলারে ট্রেসিং শুরু এবং বন্ধ করতে পারেন।

আপনি ট্রেস লগ তৈরি করা শুরু করার আগে, নিশ্চিত করুন যে আপনার অ্যাপটি তার অ্যাপ-নির্দিষ্ট ডিরেক্টরিতে ট্রেস লগগুলি সংরক্ষণ করতে যুক্তি যুক্ত করেছে৷

আপনার অ্যাপ যন্ত্র

ট্রেস লগ তৈরি করতে, startMethodTracing() কল করুন যেখানে আপনি সিস্টেমটি লগিং ট্রেসিং ডেটা শুরু করতে চান৷

কলে, আপনি .trace ফাইলের নাম নির্দিষ্ট করতে পারেন, এবং সিস্টেম এটিকে একটি প্যাকেজ-নির্দিষ্ট ডিরেক্টরিতে সংরক্ষণ করে যা লক্ষ্য ডিভাইসে স্থায়ী অ্যাপ ডেটার জন্য উদ্দিষ্ট - এটি একই ডিরেক্টরি যা getExternalFilesDir() এবং দ্বারা ফেরত দেওয়া হয় বেশিরভাগ ডিভাইসে ~/sdcard/ ডিরেক্টরিতে অবস্থিত। এই ফাইলটিতে বাইনারি পদ্ধতির ট্রেস ডেটা এবং থ্রেড এবং পদ্ধতির নাম সহ একটি ম্যাপিং টেবিল রয়েছে। ট্রেসিং বন্ধ করতে, stopMethodTracing() এ কল করুন।

নিম্নোক্ত নমুনাটি শুরু করে এবং একটি ট্রেস লগ রেকর্ড করা শুরু করে sample.trace নামের সাথে:

কোটলিন

// 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()

জাভা

// 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() কল করার আগে সিস্টেমটি সর্বাধিক বাফার আকারে পৌঁছালে, সিস্টেম ট্রেসিং বন্ধ করে এবং কনসোলে একটি বিজ্ঞপ্তি পাঠায়। যে পদ্ধতিগুলি ট্রেসগুলি শুরু এবং বন্ধ করে তা আপনার সমগ্র অ্যাপ প্রক্রিয়া জুড়ে কাজ করে৷ অর্থাৎ, আপনি আপনার কার্যকলাপের onCreate(Bundle) পদ্ধতিতে startMethodTracing() কল করতে পারেন এবং সেই কার্যকলাপের onDestroy() পদ্ধতিতে stopMethodTracing() কল করতে পারেন।

নোট করুন যে প্রোফাইলিং সক্ষম হলে আপনার অ্যাপ আরও ধীরে চলে। অর্থাৎ, সম্পূর্ণ সময় নির্ধারণ করতে আপনার প্রোফাইলিং ডেটা ব্যবহার করা উচিত নয় (যেমন, "পদ্ধতি foo() চালানোর জন্য 2.5 সেকেন্ড সময় লাগে")। ট্রেস লগগুলিতে থাকা সময়ের তথ্যগুলি শুধুমাত্র পূর্ববর্তী ট্রেস লগগুলির সাথে তুলনা করার সময়ই উপযোগী, যাতে আপনি দেখতে পারেন যে সাম্প্রতিক পরিবর্তনগুলি আপনার অ্যাপকে দ্রুত বা ধীর করে তোলে কিনা৷

Android 5.0 (API স্তর 21) এবং উচ্চতর চলমান ডিভাইসগুলিতে স্থাপন করার সময়, আপনি কম রানটাইম কর্মক্ষমতা প্রভাব সহ প্রোফাইলে নমুনা-ভিত্তিক প্রোফাইলিং ব্যবহার করতে পারেন। নমুনা প্রোফাইলিং সক্ষম করতে, একটি নির্দিষ্ট স্যাম্পলিং ব্যবধান সহ startMethodTracingSampling() ( startMethodTracing() কল করার পরিবর্তে কল করুন। আপনার অ্যাপ stopMethodTracing() কল না করা পর্যন্ত সিস্টেমটি পর্যায়ক্রমে নমুনা সংগ্রহ করে।

একাধিক লগ সংরক্ষণ করুন

যদি আপনার অ্যাপটি ট্রেস লগের জন্য একটি নতুন নাম উল্লেখ না করে একাধিকবার একটি পদ্ধতি ট্রেস শুরু করে এবং বন্ধ করে, তাহলে ডিভাইসটি পুরানো ট্রেস লগটিকে নতুনটির সাথে ওভাররাইট করে—অর্থাৎ, এটি শুধুমাত্র সাম্প্রতিক ট্রেস লগটি রাখে৷ আপনার ডিভাইসে একাধিক ট্রেস লগ সংরক্ষণ করতে, প্রতিবার আপনার অ্যাপ startMethodTracing() কল করলে গতিশীলভাবে ট্রেস লগের নাম পরিবর্তন করুন। প্রতিটি ট্রেস লগ নামকরণের সময় বর্তমান তারিখ এবং সময় অন্তর্ভুক্ত করতে নীচের নমুনাটি SimpleDateFormat ক্লাস ব্যবহার করে:

কোটলিন

// 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")

জাভা

// 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 কমান্ড ব্যবহার করে আপনার স্থানীয় মেশিনে ফাইলটি অনুলিপি করুন। নীচের কমান্ডটি আপনার স্থানীয় মেশিনের ~/Documents/trace-logs/ ডিরেক্টরিতে ডিভাইস থেকে sample.trace নামের একটি ট্রেস লগ কপি করে।

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

আপনি তারপর CPU প্রোফাইলার দিয়ে ট্রেস ফাইল আমদানি করতে পারেন।