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

पता सैनिटाइज़र: 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 डिबग और libc कॉलबैक का इस्तेमाल करके नेटिव मेमोरी ट्रैकिंग लेख पढ़ें.

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

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

मैलक हुक

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

मैलक स्टैटिस्टिक्स

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

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

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

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

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

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