अपने ऐप्लिकेशन में बदलाव करके ट्रेस लॉग जनरेट करें

अपने ऐप्लिकेशन के चलने का तरीका ट्रेस करने के लिए, ऐप्लिकेशन इंस्ट्रुमेंट का इस्तेमाल करें 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(), सिस्टम, ट्रेस करना बंद कर देता है और कंसोल को एक सूचना भेजता है. ट्रेस को शुरू और बंद करने वाले तरीके आपके ऐप्लिकेशन की पूरी प्रोसेस पर काम करते हैं. वह है, आप कॉल कर सकते हैं 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);

डिवाइस पर ट्रेस लॉग ऐक्सेस करें

सिस्टम की ओर से आपके डिवाइस पर ट्रेस लॉग बनाने के बाद, फ़ाइल को ऐक्सेस किया जा सकता है नीचे दिए गए तरीकों में से किसी एक का इस्तेमाल करें:

  • डिवाइस एक्सप्लोरर का इस्तेमाल करें. Device Explorer खोलने के लिए, देखें > टूल की विंडो > Device Explorer (या डिवाइस एक्सप्लोरर बटन). जैसा कि पहली इमेज में दिखाया गया है .trace फ़ाइलों को ढूंढने के लिए, अपने ऐप्लिकेशन की पैकेज के हिसाब से डायरेक्ट्री.

    पहला डायग्राम. Device Explorer का इस्तेमाल करके, ट्रेस लॉग का पता लगाना.

  • adb pull निर्देश का इस्तेमाल करके, फ़ाइल को अपने कंप्यूटर पर कॉपी करें. नीचे दिया गया निर्देश डिवाइस से sample.trace नाम के ट्रेस लॉग को कॉपी करता है आपके कंप्यूटर की ~/Documents/trace-logs/ डायरेक्ट्री.

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

इसके बाद आप ट्रेस फ़ाइल इंपोर्ट करें. सीपीयू प्रोफ़ाइलर.