איתור באגים שימוש בזיכרון מקורי

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

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

אתה יכול להבזיז תמונות HWASan שנבנו מראש למכשירי Pixel נתמכים מ- ci.android.com ( הוראות הגדרה מפורטות ).

מאז אנדרואיד 8.0 (Oreo) אפשר גם להשתמש ב-ASan כדי לנפות באגים באפליקציות במכשירי ייצור ללא שורש. אתה יכול למצוא הוראות ב- ASan wiki .

האפפרופד

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

Malloc ניפוי באגים

ראה Malloc Debug ו-Native Memory Tracking באמצעות libc Callbacks לתיאור יסודי של אפשרויות ניפוי הבאגים הזמינות עבור בעיות זיכרון מקורי.

libmemunaccessable

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

ווי מאלוק

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

סטטיסטיקה של מאלוק

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

Dalvik Debug Monitor Server

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

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

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

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