Debug dell'uso della memoria nativa

Disinfettante per indirizzi: HWASan/ASan

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

Puoi 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 delle app su dispositivi di produzione senza root. Puoi trovare le istruzioni sul wiki di ASan .

Heapproved

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

Debug di Malloc

Consulta Malloc Debug e Native Memory Tracking using libc Callbacks per una descrizione completa delle opzioni di debug disponibili per problemi di memoria nativa.

libmemunreachable

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

Ganci Malloc

Se vuoi creare i tuoi strumenti, 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 sull'uso.

Statistiche di Malloc

Android supporta le estensioni 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 degli errori di Dalvik

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

Per utilizzare DDMS, attiva prima 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, puoi passare alla nuova scheda di allocazione nativa e popolarla con un elenco di allocazioni. Ciò è particolarmente utile per il debug delle perdite di memoria.