Debug dell'uso della memoria nativa

Disinfettante per indirizzi: HWASan/ASan

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

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

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

Heapprod

Android 10 supporta heapprofd, un profilatore di heap di campionamento a basso sovraccarico. 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 nel sito della documentazione Perfetto .

Maloc debug

Per una descrizione completa delle opzioni di debug disponibili per problemi di memoria nativa, vedere Malloc Debug eNative Memory Tracking using libc Callbacks .

libmemunraggiungibile

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

Ganci Malloc

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

Statistiche di Malloc

Android supporta le mallinfo(3) e malloc_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.

Server di monitoraggio del debug di Dalvik

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

Per utilizzare DDMS, prima attiva l'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 di perdite di memoria.