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

Address Sanitizer: 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 Debug وتتبُّع الذاكرة الأصلية باستخدام عمليات رد الاتصال في libc للحصول على وصف تفصيلي لخيارات تصحيح الأخطاء المتاحة لمشاكل الذاكرة الأصلية.

libmemunreachable

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

خطافات Malloc

إذا أردت إنشاء أدواتك الخاصة، يتيح لك libc في Android أيضًا اعتراض جميع طلبات التخصيص/التحرير التي تحدث أثناء تنفيذ البرنامج. راجِع مستندات malloc_hooks للحصول على تعليمات الاستخدام.

إحصاءات Malloc

يتيح نظام التشغيل Android استخدام الإضافتين mallinfo(3)وmalloc_info(3) إلى <malloc.h>. تتوفّر الدالة malloc_info في الإصدار 6.0 (Marshmallow) من نظام التشغيل Android والإصدارات الأحدث، ويتم توثيق مخطط XML الخاص بها في <malloc.h> من Bionic.

خادم Dalvik Debug Monitor

يمكنك أيضًا استخدام خادم مراقبة تصحيح أخطاء Dalvik (DDMS) للحصول على عرض رسومي لناتج تصحيح أخطاء Malloc.

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

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

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