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

ضدعفونی‌کننده آدرس: HWASan/ASan

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

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

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

تایید شده

اندروید ۱۰ از heapprofd، یک پروفایلر هیپ نمونه‌برداری با سربار کم، پشتیبانی می‌کند. heapprofd به شما امکان می‌دهد میزان استفاده از حافظه بومی را به callstacks در برنامه خود نسبت دهید. برای اطلاعات بیشتر به heapprofd - پروفایلر هیپ اندروید در سایت مستندات Perfetto مراجعه کنید.

اشکال‌زدایی Malloc

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

libmemunreachable

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

قلاب‌های مالوک

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

آمار مالوک

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

سرور مانیتور اشکال‌زدایی دالویک

همچنین می‌توانید از سرور نظارت بر اشکال‌زدایی Dalvik (DDMS) برای مشاهده‌ی گرافیکی خروجی اشکال‌زدایی Malloc استفاده کنید.

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

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

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