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

أداة إزالة الشوائب من العناوين: 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 Heap Profiler على الموقع الإلكتروني للوثائق حول Perfetto لمزيد من المعلومات.

تصحيح أخطاء مالوك

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

يمكن الوصول إليها

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

خطافات مالوك

إذا أردت إنشاء أدواتك الخاصة، تتيح 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 خادم مراقبة (DDMS) للحصول على عرض رسومي لتصحيح أخطاء Madoc الإخراج.

لاستخدام DDMS، عليك أولاً تفعيل واجهة مستخدم الذاكرة الأصلية:

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

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