Men-debug penggunaan memori native

Address Sanitizer: HWASan/ASan

Developer platform Android menggunakan HWAddressSanitizer (HWASan) untuk menemukan bug memori di C/C++.

Anda dapat mem-flash image HWASan bawaan ke perangkat Pixel yang didukung dari ci.android.com (petunjuk penyiapan mendetail).

Mulai Android 8.0 (Oreo), ASan juga dapat digunakan untuk men-debug aplikasi di perangkat produksi yang tidak di-root. Anda dapat menemukan petunjuknya di ASan wiki.

Heapprofd

Android 10 mendukung heapprofd, profiler heap pengambilan sampel dengan overhead rendah. heapprofd memungkinkan Anda mengatribusikan penggunaan memori native ke callstack dalam program Anda. Lihat heapprofd - Android Heap Profiler di situs dokumentasi Perfetto untuk mengetahui informasi selengkapnya.

Malloc debug

Lihat Debug Malloc dan Pelacakan Memori Native menggunakan Callback libc untuk mendapatkan deskripsi menyeluruh tentang opsi pen-debug-an yang tersedia untuk masalah memori native.

libmemunreachable

libmemunreachable Android adalah detektor kebocoran memori native tanpa overhead. Deteksi kebocoran memori ini menggunakan proses pengumpulan sampah mark-and-sweep yang tidak presisi di semua memori native, dan melaporkan semua blok yang tidak dapat dijangkau sebagai kebocoran. Lihat dokumentasi libmemunreachable untuk mengetahui petunjuk penggunaan.

Malloc hooks

Jika Anda ingin membuat alat sendiri, libc Android juga mendukung pencegatan semua panggilan alokasi/gratis yang terjadi selama eksekusi program. Lihat dokumentasi malloc_hooks untuk mendapatkan petunjuk penggunaan.

Statistik malloc

Android mendukung ekstensi mallinfo(3) dan malloc_info(3) ke <malloc.h>. Fungsi malloc_info tersedia di Android 6.0 (Marshmallow) dan yang lebih tinggi serta skema XML-nya didokumentasikan dalam <malloc.h> Bionic.

Dalvik Debug Monitor Server

Anda juga dapat menggunakan Dalvik Debug Monitor Server (DDMS) untuk mendapatkan tampilan grafis output Malloc Debug.

Untuk menggunakan DDMS, aktifkan terlebih dahulu UI memori native-nya:

  1. Buka ~/.android/ddms.cfg
  2. Tambahkan baris: native=true

Setelah meluncurkan kembali DDMS dan memilih proses, Anda dapat beralih ke tab alokasi native baru dan mengisinya dengan daftar alokasi. Hal ini sangat berguna untuk men-debug kebocoran memori.