تصحيح أخطاء استخدام الذاكرة المضمّنة

أداة تنظيف العناوين: HWASan/ASan

يستخدم مطوّرو منصة Android أداة HWAddressSanitizer (HWASan) للعثور على أخطاء الذاكرة في C/C++.

يمكنك فلاش صور HWASan المُعدّة مسبقًا على أجهزة Pixel المتوافقة من ci.android.com (تعليمات الإعداد التفصيلية).

منذ الإصدار Android 8.0 (Oreo)، أصبح من الممكن أيضًا استخدام ASan لتصحيح أخطاء التطبيقات على الأجهزة المخصّصة للإصدارات العلنية والتي لم يتم تعريضها للاختراق. يمكنك العثور على التعليمات في ملف ASan wiki.

Heapprofd

يتيح لك نظام التشغيل Android 10 استخدام أداة heapprofd، وهي أداة تحليل للذاكرة تستخدِم عيّنات وتستهلك موارد منخفضة. تتيح لك أداة heapprofd تحديد استخدام الذاكرة الأصلية في تسلسلات استدعاء الدوال البرمجية في برنامجك. اطّلِع على heapprofd - أداة تحليل الذاكرة في Android على موقع مستندات Perfetto الإلكتروني لمزيد من المعلومات.

تصحيح أخطاء تخصيص وتسرّب الذاكرة

اطّلِع على تصحيح أخطاء Malloc وتتبُّع ملف برمجي للذاكرة الأصلية باستخدام وظائف الاستدعاء libc للحصول على وصف شامل ل options لتصحيح الأخطاء المتاحة لمشاكل الذاكرة الأصلية.

libmemunreachable

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، عليك أولاً تفعيل واجهة المستخدم الأصلية للذاكرة:

  1. فتح "~/.android/ddms.cfg"
  2. أضِف السطر: native=true

عند إعادة تشغيل DDMS واختيار عملية، يمكنك التبديل إلى علامة التبويب الجديدة التخصيص التلقائي وملؤها بقائمة عمليات التخصيص. ويُعدّ ذلك مفيداً بشكل خاص لتصحيح أخطاء تسرّب الذاكرة.