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

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) का इस्तेमाल करके, Malloc Debug के आउटपुट का ग्राफ़िकल व्यू भी देखा जा सकता है.

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

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

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