नेटिव मेमोरी उपयोग को डिबग करना

पता सैनिटाइज़र: HWASan/ASan

एंड्रॉइड प्लेटफ़ॉर्म डेवलपर्स C/C++ में मेमोरी बग ढूंढने के लिए HWAddressSanitizer (HWASan) का उपयोग करते हैं।

आप ci.android.com ( विस्तृत सेटअप निर्देश ) से समर्थित पिक्सेल उपकरणों पर पूर्वनिर्मित HWASan छवियों को फ्लैश कर सकते हैं।

Android 8.0 (Oreo) के बाद से गैर-रूटेड उत्पादन उपकरणों पर ऐप्स को डीबग करने के लिए ASan का उपयोग करना भी संभव है। आप एएसएएन विकी पर निर्देश पा सकते हैं।

हेप्रोफ्ड

एंड्रॉइड 10 heapprofd, एक लो-ओवरहेड, सैंपलिंग हीप प्रोफाइलर को सपोर्ट करता है। heapprofd आपको अपने प्रोग्राम में कॉलस्टैक्स के लिए मूल मेमोरी उपयोग का श्रेय देता है। अधिक जानकारी के लिए Perfetto दस्तावेज़ साइट पर heapprofd - Android Heap प्रोफाइलर देखें।

मॉलोक डिबग

नेटिव मेमोरी समस्याओं के लिए उपलब्ध डिबगिंग विकल्पों के विस्तृत विवरण के लिए libc कॉलबैक का उपयोग करके मॉलोक डिबग और नेटिव मेमोरी ट्रैकिंग देखें।

libmemunreachable

एंड्रॉइड का libmemunreachable एक शून्य-ओवरहेड देशी मेमोरी लीक डिटेक्टर है। यह सभी मूल मेमोरी पर एक सटीक मार्क-एंड-स्वीप कचरा कलेक्टर पास का उपयोग करता है, जो किसी भी पहुंच योग्य ब्लॉक को लीक के रूप में रिपोर्ट करता है। उपयोग संबंधी निर्देशों के लिए libmemunreachable दस्तावेज़ देखें।

मॉलोक हुक

यदि आप अपने स्वयं के उपकरण बनाना चाहते हैं, तो एंड्रॉइड का libc प्रोग्राम निष्पादन के दौरान होने वाली सभी आवंटन/मुक्त कॉलों को इंटरसेप्ट करने का भी समर्थन करता है। उपयोग निर्देशों के लिए Malloc_hooks दस्तावेज़ देखें।

मॉलोक आँकड़े

एंड्रॉइड <malloc.h> के लिए mallinfo(3) और malloc_info(3) एक्सटेंशन का समर्थन करता है। malloc_info फ़ंक्शन एंड्रॉइड 6.0 (मार्शमैलो) और उच्चतर में उपलब्ध है और इसकी XML स्कीमा बायोनिक के <malloc.h> में प्रलेखित है।

डाल्विक डिबग मॉनिटर सर्वर

आप मॉलोक डीबग आउटपुट का ग्राफिकल दृश्य प्राप्त करने के लिए डाल्विक डिबग मॉनिटर सर्वर (डीडीएमएस) का भी उपयोग कर सकते हैं।

डीडीएमएस का उपयोग करने के लिए, पहले इसकी मूल मेमोरी यूआई चालू करें:

  1. ~/.android/ddms.cfg खोलें
  2. पंक्ति जोड़ें: native=true

डीडीएमएस को फिर से लॉन्च करने और एक प्रक्रिया का चयन करने पर, आप नए मूल आवंटन टैब पर स्विच कर सकते हैं और इसे आवंटन की सूची से भर सकते हैं। यह मेमोरी लीक को डीबग करने के लिए विशेष रूप से उपयोगी है।