Esegui il debug dell'utilizzo della memoria nativa

Sanitizzatore di indirizzi: 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 a partire da ci.android.com (istruzioni dettagliate per la configurazione).

Da Android 8.0 (Oreo) è possibile usare ASan anche per eseguire il debug delle app in un ambiente di produzione non rooted dispositivi mobili. Puoi trovare le istruzioni sulla wiki di ASan.

Heapprofd

Android 10 supporta heapprofd, un profiler heap di esempio a basso overhead. heapprofd ti consente di attribuire l'utilizzo della memoria nativa agli stack di chiamate nel tuo programma. Per saperne di più, consulta heapprofd - Android Heap Profiler sul sito della documentazione di Perfetto.

Debug malloc

Consulta Debug di Malloc e Monitoraggio della memoria nativa tramite callback libc per una descrizione dettagliata delle opzioni di debug disponibili per i problemi di memoria nativa.

libmemunreachable

Il sistema libmemunreachable di Android è un rilevatore di perdite di memoria nativa a zero overhead. Usa un garbage collector impreciso su tutta la memoria nativa, segnalando eventuali blocchi non raggiungibili come fughe di informazioni. Consulta le libmemunreachable [libmemunreachable] documentazione per le istruzioni per l'utilizzo.

Hook Malloc

Se vuoi creare i tuoi strumenti, la libc di Android supporta anche l'intercettazione di tutte le chiamate di allocazione/deallocazione che si verificano durante l'esecuzione del programma. Consulta le malloc_hooks documentazione per le istruzioni per l'utilizzo.

Statistiche 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 Bionic's <malloc.h>

Dalvik Debug Monitor Server

Puoi anche utilizzare lo strumento Dalvik Debug Monitora il server (DDMS) per ottenere una vista grafica del debug di Malloc come output.

Per utilizzare DDMS, attiva prima la relativa UI della memoria nativa:

  1. Apri ~/.android/ddms.cfg
  2. Aggiungi la riga: native=true

Dopo aver riavviato DDMS e aver selezionato un processo, puoi passare alla nuova scheda di allocazione nativa e compilarla con un elenco di allocazioni. Questo è particolarmente utile per il debug delle perdite di memoria.