مطهّر العنوان: HWASan/ASan
يستخدم مطوّرو منصة Android أداة HWAddressSanitizer (HWASan) للعثور على أخطاء الذاكرة في C/C++.
يمكنك تثبيت صور HWASan المنشأة مسبقًا على أجهزة Pixel المتوافقة من خلال ci.android.com (تعليمات الإعداد التفصيلية).
منذ نظام التشغيل Android 8.0 (Oreo)، أصبح من الممكن أيضًا استخدام ASan لتصحيح أخطاء التطبيقات على الأجهزة المخصّصة للإصدارات العلنية والتي لم يتم تعريضها للاختراق. يمكنك العثور على التعليمات في ملف ASan wiki.هابروفد
يتوافق Android 10 مع Heapprofd، وهو تحليل منخفض للقطات لأجزاء من الذاكرة، يتيح لك إمكانية نسب استخدام الذاكرة الأصلية إلى حزم المكالمات في برنامجك. اطّلِع على heapprofd - أداة تحليل الذاكرة في Android على موقع مستندات Perfetto الإلكتروني لمزيد من المعلومات.
تصحيح أخطاء تخصيص وتسرّب الذاكرة
اطّلِع على تصحيح أخطاء Malloc وتتبُّع الذاكرة الأصلية باستخدام وظائف الاستدعاء libc للحصول على وصف شامل ل options التصحيح المتاحة لمشاكل الذاكرة الأصلية.
يمكن الوصول إليها
libmemunreachable في Android هي أداة رصد تسرُّب الذاكرة الأصلية بدون أي تكلفة إضافية. ويستخدم هذا الإجراء طريقة غير دقيقة لجمع المهملات من خلال وضع علامة عليها وتنظيفها في جميع ذاكرة التطبيقات الأصلية، ويُبلغ عن أي وحدات لا يمكن الوصول إليها على أنّها تسرب للذاكرة. اطّلِع على مستندات libmemunreachable للحصول على تعليمات الاستخدام.
خطافات Malloc
إذا كنت تريد إنشاء أدواتك الخاصة، تتيح مكتبة libc في Android أيضًا اعتراض جميع طلبات تخصيص الذاكرة أو تحريرها التي تحدث أثناء تنفيذ البرنامج. اطّلِع على مستنداتmalloc_hooks للحصول على تعليمات الاستخدام.
إحصاءات Malloc
يتيح Android استخدام علامتَي التبويب mallinfo(3)
وmalloc_info(3)
مع <malloc.h>
.
تتوفّر الدالة malloc_info
في الإصدار 6.0 من نظام التشغيل Android (Marshmallow) والإصدارات الأحدث،
وتم توثيق مخطّط XML الخاص بها في <malloc.h>
في Bionic.
خادم Dalvik Debug Monitor
يمكنك أيضًا استخدام Dalvik Debug Monitor Server (DDMS) للحصول على عرض بياني لمخرجات Malloc Debug.
لاستخدام DDMS، عليك أولاً تفعيل واجهة مستخدم الذاكرة الأصلية:
- فتح "
~/.android/ddms.cfg
" - إضافة السطر:
native=true
عند إعادة إطلاق DDMS واختيار عملية، يمكنك التبديل إلى علامة تبويب "التخصيص" الأصلية الجديدة وتعبئتها بقائمة من عمليات التخصيص. ويُعدّ ذلك مفيداً بشكل خاص لتصحيح أخطاء تسرّب الذاكرة.