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:
- Apri
~/.android/ddms.cfg
- 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.