اشکال‌زدایی استفاده از حافظه بومی

Address Sanitizer: HWASan/ASan

توسعه‌دهندگان پلاتفرم Android از HWAddressSanitizer (HWASan) برای یافتن اشکالات حافظه در C/C++‎ استفاده می‌کنند.

می‌توانید تصاویر HWASan ازپیش‌ساخته را از ci.android.com (دستورالعمل‌های دقیق راه‌اندازی) به دستگاه‌های Pixel پشتیبانی‌شده فلش کنید.

از Android 8.0 (Oreo) به بعد، استفاده از ASan برای اشکال‌زدایی برنامه‌ها در دستگاه‌های تولید غیرریشه‌دار نیز امکان‌پذیر است. می‌توانید دستورالعمل‌ها را در ویکی ASan پیدا کنید.

Heapprofd

‫Android 10 از heapprofd، یک نمونه‌بردار پشته با سربار کم، پشتیبانی می‌کند. ‫heapprofd به شما امکان می‌دهد مصرف حافظه بومی را به پشته‌های فراخوانی در برنامه‌تان نسبت دهید. برای اطلاعات بیشتر، heapprofd - Android Heap Profiler را در سایت اسناد Perfetto ببینید.

اشکال‌زدایی تخصیص حافظه

برای شرح کامل گزینه‌های اشکال‌زدایی دردسترس برای مشکلات حافظه محلی، Malloc Debug و ردیابی حافظه محلی بااستفاده از برگشتی‌های libc را ببینید.

libmemunreachable

‫libmemunreachable در Android یک آشکارساز نشت حافظه محلی با سربار صفر است. این ابزار از یک گذر جمع‌آوری زباله علامت‌گذاری و جاروب غیردقیق روی تمام حافظه بومی استفاده می‌کند، و هر بلوک غیرقابل دسترسی را به‌عنوان نشت گزارش می‌دهد. برای دستورالعمل‌های استفاده، به libmemunreachable مستندات مراجعه کنید.

قلاب‌های تخصیص حافظه

اگر می‌خواهید ابزارهای خودتان را بسازید، libc در Android از رهگیری همه فراخوانی‌های تخصیص/آزاد کردن که درطول اجرای برنامه اتفاق می‌افتد نیز پشتیبانی می‌کند. برای دستورالعمل‌های استفاده، سند malloc_hooks را ببینید.

آمار Malloc

Android از افزونه‌های mallinfo(3) و malloc_info(3) برای <malloc.h> پشتیبانی می‌کند. تابع malloc_info در Android نسخه ۶.۰ (Marshmallow) و بالاتر دردسترس است و طرح‌واره XML آن در <malloc.h> Bionic مستند شده است.

سرور پایش اشکال‌زدایی Dalvik

همچنین می‌توانید از Dalvik Debug Monitor Server (DDMS) برای دریافت نمای گرافیکی برونداد Malloc Debug استفاده کنید.

برای استفاده از DDMS، ابتدا واسط کاربر حافظه بومی آن را روشن کنید:

  1. باز کردن ~/.android/ddms.cfg
  2. افزودن خط: native=true

پس‌از راه‌اندازی مجدد DDMS و انتخاب فرایند، می‌توانید به برگه اختصاص بومی جدید بروید و آن را با فهرستی از اختصاص‌ها پر کنید. این به‌ویژه برای اشکال‌زدایی نشت حافظه مفید است.