Debug dell'uso della memoria nativa

Indirizzo disinfettante: HWASan/ASan

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

Si può lampeggiare predefiniti immagini HWASan ai dispositivi supportati da Pixel ci.android.com ( istruzioni dettagliate ).

Da Android 8.0 (Oreo) è anche possibile utilizzare Asan per eseguire il debug di app su dispositivi di produzione senza root. È possibile trovare le istruzioni sul wiki Asan .

Heapprofd

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

Debug di Malloc

Vedi Malloc Debug enativo di memoria di monitoraggio utilizzando libc callback per una descrizione completa delle opzioni di debug disponibili per problemi di memoria nativi.

libmemunraggiungibile

libmemunreachable di Android è un rilevatore di perdite di memoria nativo a zero spese. Utilizza un impreciso passaggio di raccolta dei rifiuti mark-and-sweep su tutta la memoria nativa, segnalando eventuali blocchi irraggiungibili come perdite. Vedere la documentazione di libmemunreachable per le istruzioni d'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. Vedere la documentazione di malloc_hooks per le istruzioni d'uso.

Statistiche di Malloc

Supporta Android il mallinfo(3) e malloc_info(3) estensioni per <malloc.h> . La malloc_info funzione è disponibile in Android 6.0 (Marshmallow) e più alto e il suo schema XML è documentata in Bionic di <malloc.h> .

Server di monitoraggio debug Dalvik

È inoltre possibile utilizzare la Dalvik Debug Monitor Server (DDMS) per ottenere una visualizzazione grafica della produzione Malloc Debug.

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

  1. Aprire ~/.android/ddms.cfg
  2. Aggiungere 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.