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

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

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

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

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

هیپروفد

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

اشکال زدایی Malloc

برای توضیح کامل گزینه های اشکال زدایی موجود برای مشکلات حافظه بومی، به Malloc Debug و Native Memory Tracking با استفاده از libc Callbacks مراجعه کنید.

libmemun قابل دسترسی

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

قلاب مالوک

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

آمار Malloc

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

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

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

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

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

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