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

عنوان المطهر: HWASan/ASan

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

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

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

هيبروفد

يدعم Android 10 ملف تعريف heapprofd، وهو ملف تعريف كومة عينات منخفض التكلفة. يتيح لك heapprofd إسناد استخدام الذاكرة الأصلية إلى مكدسات الاتصال في برنامجك. راجع heapprofd - Android Heap Profiler على موقع وثائق Perfetto لمزيد من المعلومات.

تصحيح مالوك

راجع Malloc Debug و Native Memory Tracking باستخدام libc Callbacks للحصول على وصف شامل لخيارات التصحيح المتاحة لمشكلات الذاكرة الأصلية.

libmemunreachable

يعد libmemunreachable الخاص بنظام Android بمثابة كاشف تسرب للذاكرة الأصلي. يستخدم أداة تجميع البيانات المهملة للعلامة والمسح غير الدقيقة على كل الذاكرة الأصلية، مع الإبلاغ عن أي كتل لا يمكن الوصول إليها على أنها تسربات. راجع وثائق libmemunreachable للحصول على تعليمات الاستخدام.

خطافات مالوك

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

إحصائيات مالوك

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

خادم مراقبة التصحيح Dalvik

يمكنك أيضًا استخدام Dalvik Debug Monitor Server (DDMS) للحصول على عرض رسومي لمخرجات Malloc Debug.

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

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

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