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

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 लाइब्रेरी, प्रोग्राम के एक्ज़ीक्यूशन के दौरान होने वाले सभी ऐलोकेशन/फ़्री कॉल को इंटरसेप्ट करने की सुविधा भी देती है. इस्तेमाल से जुड़े निर्देशों के लिए, malloc_hooks के बारे में जानकारी देने वाला दस्तावेज़ देखें.

malloc के आंकड़े

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

Dalvik Debug Monitor Server

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

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

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

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