החל מ-27 במרץ 2025, מומלץ להשתמש ב-android-latest-release
במקום ב-aosp-main
כדי ליצור תרומות ל-AOSP. מידע נוסף זמין במאמר שינויים ב-AOSP.
ניפוי באגים של שימוש בזיכרון מקומי
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
כלי לניקוי כתובות: HWASan/ASan
מפתחי פלטפורמת Android משתמשים ב-HWAddressSanitizer (HWASan) כדי למצוא באגים בזיכרון ב-C/C++.
אפשר להטמיע קובצי אימג' של HWASan שנוצרו מראש במכשירי Pixel נתמכים מ-ci.android.com (הוראות מפורטות להגדרה).
החל מגרסה Android 8.0 (Oreo), אפשר גם להשתמש ב-ASAN כדי לנפות באגים באפליקציות במכשירי ייצור שלא עברו תהליך רוט. ההוראות מפורטות ב
וויקי של ASan.
Heapprofd
Android 10 תומך ב-heapprofd, כלי לניתוח אשכולות (heap) באמצעות דגימה עם תקורה נמוכה. heapprofd מאפשר לשייך את השימוש בזיכרון מקומי למחסומי קריאות בתוכנית.
מידע נוסף זמין במאמר
heapprofd – Android Heap Profiler באתר המסמכים של Perfetto.
ניפוי באגים בשיטת Malloc
במאמרים ניפוי באגים ב-Malloc ומעקב אחר זיכרון נייטיב באמצעות קריאות חזרה (callbacks) של libc מפורט תיאור מלא של אפשרויות ניפוי הבאגים שזמינות לבעיות בזיכרון נייטיב.
libmemunreachable
libmemunreachable של Android הוא גלאי דליפות זיכרון נייטיב ללא תקורה.
הוא משתמש במעבר לא מדויק של אשפה עם סימון וסריקה בכל הזיכרון המקומי, ומדווח על כל בלוק שלא ניתן לגשת אליו כדליפה. הוראות השימוש מפורטות במסמכי העזרה של libmemunreachable.
קטעי הוק של Malloc
אם אתם רוצים ליצור כלים משלכם, libc של Android תומכת גם באינטרפקציה של כל הקריאות להקצאה/שחרור שמתרחשות במהלך ביצוע התוכנית. הוראות השימוש מפורטות במסמכי התיעוד של malloc_hooks.
נתונים סטטיסטיים של Malloc
ב-Android יש תמיכה בתוספים mallinfo(3)
ו-malloc_info(3)
ל-<malloc.h>
.
הפונקציה malloc_info
זמינה ב-Android 6.0 (Marshmallow) ואילך, וסכימת ה-XML שלה מתועדת ב-<malloc.h>
של Bionic.
Dalvik Debug Monitor Server
אפשר גם להשתמש ב-Dalvik Debug Monitor Server (DDMS) כדי לקבל תצוגה גרפית של הפלט של Malloc Debug.
כדי להשתמש ב-DDMS, צריך קודם להפעיל את ממשק המשתמש המקורי של הזיכרון:
- פתיחת
~/.android/ddms.cfg
- מוסיפים את השורה:
native=true
אחרי שמפעילים מחדש את DDMS ובוחרים תהליך, אפשר לעבור לכרטיסייה החדשה של הקצאה מקורית וליישב אותה עם רשימת הקצאות. האפשרות הזו שימושית במיוחד לניפוי באגים של דליפות זיכרון.
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-07-27 (שעון UTC).
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2025-07-27 (שעון UTC)."],[],[],null,["# Debug native memory use\n\nAddress Sanitizer: HWASan/ASan\n------------------------------\n\nAndroid platform developers use [HWAddressSanitizer](/docs/security/test/hwasan)\n(HWASan) to find memory bugs in C/C++.\n\nYou can flash prebuilt HWASan images to supported Pixel devices from\n[ci.android.com](https://ci.android.com/builds/branches/aosp-master-with-phones-throttled/grid?) ([detailed setup instructions](https://developer.android.com/ndk/guides/hwasan)).\n\nSince Android 8.0 (Oreo) it's also possible to use ASan to debug apps on non-rooted production devices. You can find instructions on the [ASan wiki](https://github.com/google/sanitizers/wiki/AddressSanitizerOnAndroidO).\n\n\u003cbr /\u003e\n\nHeapprofd\n---------\n\nAndroid 10 supports heapprofd, a low-overhead, sampling heap profiler.\nheapprofd lets you attribute native memory usage to callstacks in your program.\nSee [heapprofd - Android Heap Profiler](https://docs.perfetto.dev/#/heapprofd) on the\n[Perfetto documentation site](https://docs.perfetto.dev/#/)\nfor more information.\n\nMalloc debug\n------------\n\nSee [Malloc\nDebug](https://android.googlesource.com/platform/bionic/+/android16-release/libc/malloc_debug/README.md) and [Native\nMemory Tracking using libc Callbacks](https://android.googlesource.com/platform/bionic/+/android16-release/libc/malloc_debug/README_api.md) for a thorough description of the\ndebugging options available for native memory issues.\n\nlibmemunreachable\n-----------------\n\nAndroid's libmemunreachable is a zero-overhead native memory leak detector.\nIt uses an imprecise mark-and-sweep garbage collector pass over all native memory,\nreporting any unreachable blocks as leaks. See the\n[libmemunreachable\ndocumentation](https://android.googlesource.com/platform/system/memory/libmemunreachable/+/android16-release/README.md) for usage instructions.\n\nMalloc hooks\n------------\n\nIf you want to build your own tools, Android's libc also supports intercepting all\nallocation/free calls that happen during program execution. See the\n[malloc_hooks\ndocumentation](https://android.googlesource.com/platform/bionic/+/android16-release/libc/malloc_hooks/README.md) for usage instructions.\n\nMalloc statistics\n-----------------\n\n\nAndroid supports the [`mallinfo(3)`](http://man7.org/linux/man-pages/man3/mallinfo.3.html)and [`malloc_info(3)`](http://man7.org/linux/man-pages/man3/malloc_info.3.html) extensions to `\u003cmalloc.h\u003e`.\nThe `malloc_info` function is available in Android 6.0 (Marshmallow) and higher and\nits XML schema is documented in Bionic's\n[`\u003cmalloc.h\u003e`](https://android.googlesource.com/platform/bionic/+/android16-release/libc/include/malloc.h).\n\nDalvik Debug Monitor Server\n---------------------------\n\nYou can also use the [Dalvik Debug\nMonitor Server (DDMS)](https://developer.android.com/studio/profile/ddms.html) to obtain a graphical view of Malloc Debug\noutput.\n\nTo use DDMS, first turn on its native memory UI:\n\n1. Open `~/.android/ddms.cfg`\n2. Add the line: `native=true`\n\nUpon relaunching DDMS and selecting a process, you can switch to the new\nnative allocation tab and populate it with a list of allocations. This is\nespecially useful for debugging memory leaks."]]