Indirizzo disinfettante: HWASan/ASan
Gli sviluppatori della piattaforma Android utilizzano HWAddressSanitizer (HWASan) per trovare bug di memoria in C/C++.
Puoi eseguire il flashing di immagini HWASan predefinite sui dispositivi Pixel supportati da ci.android.com ( istruzioni dettagliate per la configurazione ).
A partire 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 .Heapprofd
Android 10 supporta heapprofd, un profiler di heap di campionamento a basso costo. 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 sul sito della documentazione di Perfetto .
Debug di Malloc
Vedi Malloc Debug e Native Memory Tracking utilizzando i callback libc per una descrizione approfondita delle opzioni di debug disponibili per i problemi della memoria nativa.
libmemunreachable
libmemunreachable di Android è un rilevatore di perdite di memoria nativo a zero spese. Utilizza un passaggio impreciso del garbage collector mark-and-sweep su tutta la memoria nativa, segnalando eventuali blocchi irraggiungibili come perdite. Consulta 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 avvengono durante l'esecuzione del programma. Consulta la documentazione di malloc_hooks per le istruzioni sull'utilizzo.
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.
Dalvik Debug Monitor Server
È inoltre possibile utilizzare Dalvik Debug Monitor Server (DDMS) per ottenere una visualizzazione grafica dell'output di Malloc Debug.
Per utilizzare DDMS, attiva innanzitutto 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 compilarla con un elenco di allocazioni. Ciò è particolarmente utile per il debug delle perdite di memoria.