আপনার অ্যাপের এক্সিকিউশনের মেথড ট্রেস তৈরি করতে, আপনি Debug
ক্লাস ব্যবহার করে আপনার অ্যাপকে ইনস্ট্রুমেন্ট করতে পারেন। আপনার অ্যাপকে এইভাবে ইন্সট্রুমেন্ট করলে, ডিভাইস কখন ট্রেসিং তথ্য রেকর্ড করা শুরু এবং বন্ধ করবে
তার উপর আপনার আরও নিয়ন্ত্রণ থাকবে। এছাড়াও, ডিভাইসটি আপনার উল্লেখ করা নাম ব্যবহার করে
ট্রেস লগ সেভ করে, যাতে আপনি পরে সহজেই প্রতিটি লগ
শনাক্ত করতে পারেন। তারপর আপনি Android Studio
CPU Profiler ব্যবহার করে প্রতিটি ট্রেস লগ দেখতে পারবেন।
এছাড়াও, আপনি অ্যাপের কোড ইন্সট্রুমেন্ট না করেই CPU Profiler-এ ট্রেসিং শুরু ও বন্ধ করতে পারবেন।
ট্রেস লগ জেনারেট করা শুরু করার আগে, আপনার অ্যাপের অ্যাপ-নির্দিষ্ট ডিরেক্টরিতে ট্রেস লগ সেভ করার জন্য অ্যাপে লজিক যোগ করা হয়েছে কিনা তা নিশ্চিত করুন।
আপনার অ্যাপ ইন্সট্রুমেন্ট করুন
ট্রেস লগ তৈরি করতে, 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()
জাভা
// 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)
কল করতে পারবেন এবং সেই অ্যাক্টিভিটির onDestroy()
পদ্ধতিতে stopMethodTracing()
কল করতে পারবেন।
মনে রাখবেন, প্রোফাইলিং চালু থাকলে আপনার অ্যাপ আরও ধীরে চলে। অর্থাৎ, প্রোফাইলিং ডেটা ব্যবহার করে নির্দিষ্ট সময় (যেমন, "foo() মেথড
রান করতে ২.৫ সেকেন্ড সময় লাগে") নির্ধারণ করা উচিত নয়। ট্রেস লগে সময়ের তথ্য তখনই কাজে লাগে যখন
সেটি আগের ট্রেস লগের সাথে তুলনা করা হয়, যাতে আপনি দেখতে পারেন যে সাম্প্রতিক
পরিবর্তনের ফলে আপনার অ্যাপ দ্রুত নাকি ধীর গতিতে কাজ করছে।
Android 5.0 (API লেভেল ২১) এবং তার পরবর্তী যেকোনও ভার্সনে চলা ডিভাইসে ডেপ্লয় করার সময়, আপনি রানটাইম পারফর্ম্যান্সে কম প্রভাব ফেলে প্রোফাইল করার জন্য স্যাম্পেল-ভিত্তিক প্রোফাইলিং ব্যবহার করতে পারেন। স্যাম্পেল প্রোফাইলিং
চালু করতে, নির্দিষ্ট স্যাম্পলিং ইন্টারভ্যাল সহ
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")
জাভা
// 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);
ডিভাইসে ট্রেস লগ অ্যাক্সেস করুন
সিস্টেম আপনার ডিভাইসে ট্রেস লগ তৈরি করার পরে, আপনি নিম্নলিখিত উপায়ে ফাইল অ্যাক্সেস করতে পারবেন:
ডিভাইস এক্সপ্লোরার ব্যবহার করুন। Device Explorer খুলতে, View > টুল উইন্ডো > Device Explorer বিকল্পে ক্লিক করুন (অথবা টুল উইন্ডো বারে Device Explorer
বোতামে ক্লিক করুন)। ছবি ১-এ যেমন দেখানো হয়েছে
আপনি অ্যাপের প্যাকেজ-নির্দিষ্ট ডিরেক্টরিতে
নেভিগেট করে .traceফাইলগুলি খুঁজে পেতে পারেন।
ছবি ১. ডিভাইস এক্সপ্লোরার ব্যবহার করে ট্রেস লগ লোকেট করা।
adb pullকমান্ড ব্যবহার করে আপনার লোকাল মেশিনে ফাইলটি কপি করুন। নিচের কমান্ডটি ডিভাইস থেকেsample.traceনামের ট্রেস লগ কপি করে আপনার লোকাল মেশিনের~/Documents/trace-logs/ডিরেক্টরিতে সেভ করে।adb pull path-on-device/sample.trace ~/Documents/trace-logs/
তারপর আপনি CPU Profiler-এর মাধ্যমে ট্রেস ফাইল ইম্পোর্ট করতে পারবেন।