ניפוי באגים בשימוש בזיכרון נייטיב

כלי לחיטוי כתובות: HWASan/ASan

מפתחים של פלטפורמת Android משתמשים ב-HWAddressSanitizer (HWASan) כדי למצוא באגים בזיכרון ב-C/C++.

ניתן ליצור Flash תמונות HWASan מוכנות מראש למכשירי Pixel נתמכים מתוך ci.android.com (הוראות הגדרה מפורטות).

החל מגרסה 8.0 (Oreo) של Android, אפשר גם להשתמש ב-ASAN כדי לנפות באגים באפליקציות במכשירי ייצור שלא עברו רוט. ההוראות מפורטות בוויקי של ASan.

ערימה (heapprofd)

Android 10 תומך ב-heapprofd, כלי לניתוח אשכולות (heap) באמצעות דגימה עם עלות נמוכה. heapprofd מאפשר לשייך את השימוש בזיכרון מקומי למחסומי קריאות בתוכנית. מידע נוסף זמין במאמר heapprofd – Android Heap Profiler באתר התיעוד של Perfetto.

ניפוי באגים מסוג Malloc

במאמרים ניפוי באגים ב-Malloc ומעקב אחר זיכרון נייטיב באמצעות קריאות חזרה (callbacks) של libc מפורט תיאור מלא של אפשרויות ניפוי הבאגים שזמינות לבעיות בזיכרון נייטיב.

בעל גישה

libmemunreachable של Android הוא גלאי דליפות זיכרון נייטיב ללא תקורה. הוא משתמש במעבר לא מדויק של אשפה עם סימון וסריקה בכל הזיכרון המקומי, ומדווח על כל בלוק שלא ניתן להגיע אליו כדליפה. לצפייה ניתנת לגישה תיעוד לקבלת הוראות שימוש.

קטעי הוק (hooks) מסוג Malloc

אם אתם רוצים ליצור כלים משלכם, libc של Android תומכת גם בחסימת כל הקריאות להקצאה/שחרור שמתרחשות במהלך ביצוע התוכנית. הוראות השימוש מפורטות במסמכי התיעוד של malloc_hooks.

נתונים סטטיסטיים של Malloc

מערכת Android תומכת בתוספים mallinfo(3) ובתוספים malloc_info(3) ל-<malloc.h>. הפונקציה malloc_info זמינה במכשירי Android 6.0 (Marshmallow) ואילך שסכימת ה-XML מתועדת <malloc.h>.

שרת מוניטור לניפוי באגים של Dalvik

אפשר גם להשתמש ב-Dalvik Debug שרת מוניטור (DDMS) כדי לקבל תצוגה גרפית של Malloc Debug הפלט.

כדי להשתמש ב-DDMS, קודם צריך להפעיל את ממשק המשתמש של הזיכרון המקורי:

  1. פתיחת ~/.android/ddms.cfg
  2. מוסיפים את השורה: native=true

אחרי הפעלה מחדש של DDMS ובחירה בתהליך, אפשר לעבור כרטיסיית ההקצאה המקורית ומאכלסים אותה ברשימת ההקצאות. הדבר שימושי במיוחד לניפוי באגים של דליפות זיכרון.