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

المطهر العنوان: 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 للحصول على وصف شامل لخيارات التصحيح المتاحة لمشاكلالذاكرة الأصلية .

libmemunreable

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

خطاف مالوك

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

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

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

Dalvik Debug Monitor Server

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

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

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

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