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

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

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

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

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

Heapprofd

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

Malloc डीबग

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

libmemunreachable

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> में दस्तावेज़ के तौर पर मौजूद है.

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

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

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

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

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