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