Address Sanitizer: 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 Debug और libc कॉल बैक का इस्तेमाल करके नेटिव मेमोरी ट्रैकिंग देखें.
libmemunreachable
Android का libmemunreachable, नेटिव मेमोरी लीक का पता लगाने वाला एक ऐसा टूल है जो बहुत कम संसाधनों का इस्तेमाल करता है. यह सभी नेटिव मेमोरी पर, मार्क-एंड-स्वीप गार्बेज कलेक्टर पास का इस्तेमाल करता है. हालांकि, यह सटीक नहीं होता. साथ ही, यह उन ब्लॉक को लीक के तौर पर रिपोर्ट करता है जिन तक नहीं पहुंचा जा सकता. इस्तेमाल करने के निर्देशों के लिए, libmemunreachable दस्तावेज़ देखें.
मैलोक हुक
अगर आपको अपने टूल बनाने हैं, तो Android की libc लाइब्रेरी, प्रोग्राम के एक्ज़ीक्यूशन के दौरान होने वाले सभी allocation/free कॉल को इंटरसेप्ट करने की सुविधा भी देती है. इस्तेमाल करने के निर्देशों के लिए, malloc_hooks डॉक्यूमेंटेशन देखें.
malloc के आंकड़े
Android, <malloc.h> के लिए mallinfo(3) और malloc_info(3) एक्सटेंशन के साथ काम करता है.
malloc_info फ़ंक्शन, Android 6.0 (Marshmallow) और उसके बाद के वर्शन में उपलब्ध है. साथ ही, इसके एक्सएमएल स्कीमा के बारे में Bionic के <malloc.h> में बताया गया है.
Dalvik Debug Monitor Server
Malloc Debug के आउटपुट का ग्राफ़िकल व्यू पाने के लिए, Dalvik Debug Monitor Server (DDMS) का भी इस्तेमाल किया जा सकता है.
डीडीएमएस का इस्तेमाल करने के लिए, सबसे पहले इसके नेटिव मेमोरी यूज़र इंटरफ़ेस (यूआई) को चालू करें:
~/.android/ddms.cfgखोलें- यह लाइन जोड़ें:
native=true
DDMS को फिर से लॉन्च करने और कोई प्रोसेस चुनने के बाद, नए नेटिव ऐलोकेशन टैब पर स्विच किया जा सकता है. साथ ही, इसे ऐलोकेशन की सूची से भरा जा सकता है. यह मेमोरी लीक को डीबग करने के लिए खास तौर पर मददगार है.