Debug dell'utilizzo della memoria nativa

Indirizzo Sanitizer: HWASan / ASan

Gli sviluppatori della piattaforma Android utilizzano HWAddressSanitizer (HWASan) per trovare bug di memoria in C / C ++.

È possibile eseguire il flashing di immagini HWASan predefinite su dispositivi Pixel supportati da ci.android.com ( istruzioni di configurazione dettagliate ).

A partire da Android 8.0 (Oreo) è anche possibile utilizzare ASan per eseguire il debug di app su dispositivi di produzione non rooted. Puoi trovare le istruzioni sul wiki ASan .

Heapprofd

Android 10 supporta heapprofd, un profiler di heap di campionamento a basso overhead. heapprofd ti consente di attribuire l'utilizzo della memoria nativa agli stack di chiamate nel tuo programma. Per ulteriori informazioni, vedere heapprofd - Android Heap Profiler sul sito della documentazione Perfetto .

Debug di Malloc

Vedere Debug Malloc etracciamento della memoria nativa utilizzando i callback libc per una descrizione completa delle opzioni di debug disponibili per i problemi di memoria nativa.

libmemunreachable

Libmemunreachable di Android è un rilevatore di perdite di memoria nativa a zero overhead. Utilizza un garbage collector impreciso mark-and-sweep che passa su tutta la memoria nativa, segnalando eventuali blocchi irraggiungibili come perdite. Vedere la documentazione libmemunreachable per le istruzioni sull'utilizzo.

Ganci Malloc

Se vuoi creare i tuoi strumenti, la libc di Android supporta anche l'intercettazione di tutte le chiamate gratuite / allocazione che avvengono durante l'esecuzione del programma. Consulta la documentazione di malloc_hooks per le istruzioni sull'utilizzo.

Statistiche Malloc

Android supporta le mallinfo(3) emalloc_info(3) per <malloc.h> . La funzione malloc_info è disponibile in Android 6.0 (Marshmallow) e versioni successive e il suo schema XML è documentato in <malloc.h> di Bionic.

Dalvik Debug Monitor Server

È inoltre possibile utilizzare Dalvik Debug Monitor Server (DDMS) per ottenere una visualizzazione grafica dell'output di Malloc Debug.

Per utilizzare DDMS, attiva prima la sua interfaccia utente della memoria nativa:

  1. Apri ~/.android/ddms.cfg
  2. Aggiungi la riga: native=true

Dopo aver riavviato DDMS e selezionato un processo, è possibile passare alla nuova scheda di allocazione nativa e popolarla con un elenco di allocazioni. Ciò è particolarmente utile per il debug delle perdite di memoria.