नेटिव मेमोरी के इस्तेमाल को डीबग करना

पते को साफ़ करने वाला टूल: HWASan/ASan

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

ci.android.com से, पहले से बने HWASan इमेज को उन Pixel डिवाइसों पर फ़्लैश किया जा सकता है जिन पर यह सुविधा काम करती है. सेटअप के बारे में ज़्यादा जानकारी.

Android 8.0 (Oreo) के बाद, बिना रूट किए गए प्रॉडक्शन डिवाइसों पर ऐप्लिकेशन को डीबग करने के लिए, ASan का इस्तेमाल भी किया जा सकता है. इसके बारे में ज़्यादा जानने के लिए, ASan wiki पर जाएं.

हीपप्रोड

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

मैलक डीबग

नेटिव मेमोरी की समस्याओं के लिए उपलब्ध डीबगिंग के विकल्पों की पूरी जानकारी के लिए, Malloc Debug और libc कॉलबैक का इस्तेमाल करके नेटिव मेमोरी ट्रैकिंग देखें.

आसानी से ऐक्सेस किया जा सकता है

Android का libmemunReachable ज़ीरो-ओवरहेड नेटिव मेमोरी लीक डिटेक्टर है. यह सभी नेटिव मेमोरी पर, मार्क-एंड-स्वीप गै़रबेज कलेक्टर पास का इस्तेमाल करता है. साथ ही, ऐक्सेस न किए जा सकने वाले ब्लॉक को लीक के तौर पर रिपोर्ट करता है. इस्तेमाल से जुड़े निर्देशों के लिए, libmemunreachable के दस्तावेज़ देखें.

Malloc हुक

अगर आपको अपने टूल बनाने हैं, तो Android का libc, प्रोग्राम के दौरान होने वाले सभी ऐलोकेशन/फ़्री कॉल को इंटरसेप्ट करने की सुविधा भी देता है. इस्तेमाल के निर्देशों के लिए malloc_hooks दस्तावेज़ पढ़ें.

Malloc के आंकड़े

Android, <malloc.h> के लिए mallinfo(3) और malloc_info(3) एक्सटेंशन के साथ काम करता है. malloc_info फ़ंक्शन, Android 6.0 (Marshmallow) और उसके बाद के वर्शन में उपलब्ध है. साथ ही, इसका एक्सएमएल स्कीमा, Bionic के <malloc.h> में दस्तावेज़ के तौर पर मौजूद है.

Delvik डीबग मॉनिटर सर्वर

Malloc डीबग आउटपुट का ग्राफ़िक व्यू पाने के लिए, Dalvik डीबग मॉनिटर सर्वर (DDMS) का भी इस्तेमाल किया जा सकता है.

DDMS का इस्तेमाल करने के लिए, पहले इसका नेटिव मेमोरी यूज़र इंटरफ़ेस (यूआई) चालू करें:

  1. ~/.android/ddms.cfg खोलें
  2. लाइन जोड़ें: native=true

DDMS को फिर से लॉन्च करने और कोई प्रोसेस चुनने के बाद, नए नेटिव ऐलोकेशन टैब पर स्विच किया जा सकता है. साथ ही, इसे ऐलोकेशन की सूची से पॉप्युलेट किया जा सकता है. इससे खास तौर पर, मेमोरी लीक को डीबग करने में मदद मिलती है.