अपने ऐप्लिकेशन के एक्सीक्यूशन का तरीका ट्रैक करने के लिए, Debug
क्लास का इस्तेमाल करके अपने ऐप्लिकेशन को इंस्ट्रूमेंट किया जा सकता है. ऐप्लिकेशन को इस तरीके से इंस्टॉल करने पर, आपको बेहतर तरीके से कंट्रोल मिलता है कि
डिवाइस, ट्रेसिंग की जानकारी को चालू और रिकॉर्ड करना बंद कर देता है. डिवाइस यह भी सेव करता है कि
आपके बताए गए नाम इस्तेमाल करके ट्रेस लॉग करता है, ताकि आप हर लॉग को आसानी से पहचान सकें
बाद में. इसके बाद, Android Studio के सीपीयू प्रोफ़ाइलर का इस्तेमाल करके, हर ट्रेस लॉग देखा जा सकता है.
आप यह भी कर सकते हैं सीपीयू प्रोफ़ाइलर में ट्रेस करने की सुविधा को चालू और बंद करना कोड को इंस्टॉल किए बिना भी ऐसा किया जा सकता है.
ट्रेस लॉग जनरेट करने से पहले, पक्का करें कि आपके ऐप्लिकेशन ने ट्रेस लॉग को खास ऐप्लिकेशन के लिए बनाए गए ऐप्लिकेशन में ही सेव करें डायरेक्ट्री में उपलब्ध है.
अपने ऐप्लिकेशन का इंस्ट्रुमेंट इस्तेमाल करें
ट्रैक लॉग बनाने के लिए, 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()
,
सिस्टम, ट्रेस करना बंद कर देता है और कंसोल को एक सूचना भेजता है.
ट्रेस को शुरू और बंद करने वाले तरीके आपके ऐप्लिकेशन की पूरी प्रोसेस पर काम करते हैं. इसका मतलब है कि अपनी गतिविधि के onCreate(Bundle)
तरीके में startMethodTracing()
को कॉल किया जा सकता है और उस गतिविधि के onDestroy()
तरीके में stopMethodTracing()
को कॉल किया जा सकता है.
ध्यान दें कि प्रोफ़ाइल बनाने की सुविधा चालू होने पर, आपका ऐप्लिकेशन धीरे चलता है. इसका मतलब है कि आपको प्रोफ़ाइलिंग डेटा का इस्तेमाल, सटीक समय तय करने के लिए नहीं करना चाहिए. जैसे, "foo()
तरीके को चलने में 2.5 सेकंड लगते हैं". ट्रेस लॉग में समय की जानकारी
यह पिछले ट्रेस लॉग से तुलना करते समय ही काम का होता है. इसलिए, यह देखा जा सकता है कि हाल के
बदलावों से आपके ऐप्लिकेशन की रफ़्तार तेज़ या धीमी हो जाती है.
Android 5.0 (एपीआई लेवल 21) और उसके बाद के वर्शन वाले डिवाइसों पर डिप्लॉय करते समय, सैंपल पर आधारित प्रोफ़ाइलिंग का इस्तेमाल किया जा सकता है. इससे, रनटाइम की परफ़ॉर्मेंस पर कम असर पड़ता है. सैंपल प्रोफ़ाइलिंग की सुविधा चालू करने के लिए, startMethodTracing()
को कॉल करने के बजाय, किसी तय सैंपलिंग इंटरवल के साथ startMethodTracingSampling()
को कॉल करें. आपका ऐप्लिकेशन 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);
डिवाइस पर ट्रैकिंग लॉग ऐक्सेस करना
सिस्टम की ओर से आपके डिवाइस पर ट्रेस लॉग बनाने के बाद, फ़ाइल को ऐक्सेस किया जा सकता है नीचे दिए गए तरीकों में से किसी एक का इस्तेमाल करें:
डिवाइस एक्सप्लोरर का इस्तेमाल करें. Device Explorer खोलने के लिए, देखें > टूल की विंडो > Device Explorer (या डिवाइस एक्सप्लोरर
बटन). जैसा कि पहली इमेज में दिखाया गया है
.trace
फ़ाइलों को ढूंढने के लिए, अपने ऐप्लिकेशन की पैकेज के हिसाब से डायरेक्ट्री.पहला डायग्राम. Device Explorer का इस्तेमाल करके, ट्रेस लॉग का पता लगाना.
adb pull
निर्देश का इस्तेमाल करके, फ़ाइल को अपने कंप्यूटर पर कॉपी करें. नीचे दिया गया कमांड, डिवाइस सेsample.trace
नाम के ट्रैक लॉग को कॉपी करके, आपकी लोकल मशीन की~/Documents/trace-logs/
डायरेक्ट्री में चिपकाता है.adb pull path-on-device/sample.trace ~/Documents/trace-logs/
इसके बाद आप सीपीयू प्रोफ़ाइलर की मदद से ट्रेस फ़ाइल इंपोर्ट करें.