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

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 على موقع مستندات 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 Server

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

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

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

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