Address Sanitizer:HWASan/ASan
Android 平台開發人員會使用 HWAddressSanitizer (HWASan) 找出 C/C++ 中的記憶體錯誤。
您可以從 ci.android.com 將預先建構的 HWASan 映像檔刷新至支援的 Pixel 裝置 (詳細設定操作說明)。
自 Android 8.0 (Oreo) 起,您也可以使用 ASan 在未解鎖的正式版裝置上偵錯應用程式。如需操作說明,請參閱 ASan wiki。Heapprofd
Android 10 支援 heapprofd,這是一種低負擔的取樣堆積分析器。heapprofd 可讓您將原生記憶體用量歸因於程式中的呼叫堆疊。詳情請參閱 Perfetto 說明文件網站的「 heapprofd - Android 堆積分析器」一文。
Malloc debug
如要全面瞭解原生記憶體問題的偵錯選項,請參閱「Malloc 偵錯」和「使用 libc 回呼追蹤原生記憶體」。
libmemunreachable
Android 的 libmemunreachable 是零負擔的原生記憶體流失偵測器。該函式會使用不精確的標記及清除垃圾收集器傳遞所有原生記憶體,將所有無法連上的區塊回報為流失。如需相關使用操作說明,請參閱 libmemunreachable 說明文件。
Malloc 掛鉤
如要自行建構工具,Android 的 libc 也可攔截在程式執行期間發生的所有配置/釋放呼叫。如需相關使用操作說明,請參閱 malloc_hooks 說明文件。
Malloc 統計資料
Android 支援 <malloc.h>
的 mallinfo(3)
和 malloc_info(3)
擴充功能。malloc_info
函式適用於 Android 6.0 (Marshmallow) 以上版本,其 XML 架構記錄在 Bionic 的 <malloc.h>
中。
Dalvik 偵錯監視器伺服器
您也可以使用 Dalvik 偵錯監視器伺服器 (DDMS),取得 Malloc 偵錯輸出的圖形檢視畫面。
如要使用 DDMS,請先開啟原生記憶體 UI:
- 開啟「
~/.android/ddms.cfg
」 - 新增這一行:
native=true
重新啟動 DDMS 並選取程序後,您可以切換至新的原生配置分頁,並在該分頁中填入配置清單。這項功能特別適合用於偵錯記憶體流失問題。