Débogage de l'utilisation de la mémoire native

Désinfectant d'adresse : HWASan/ASan

Les développeurs de la plate - forme Android utilisent HWAddressSanitizer (HWASan) pour trouver des bogues de mémoire dans C / C ++.

Vous pouvez flasher les images HWASan de préconstruits aux périphériques pris en charge à partir de pixels ci.android.com ( instructions d'installation détaillées ).

Depuis Android 8.0 (Oreo), il est également possible d'utiliser ASan pour déboguer des applications sur des appareils de production non rootés. Vous trouverez des instructions sur le wiki Asan .

Heapprofd

Android 10 prend en charge heapprofd, un profileur de tas d'échantillonnage à faible surcharge. heapprofd vous permet d'attribuer l'utilisation de la mémoire native aux piles d'appels de votre programme. Voir heapprofd - Android Heap Profiler sur le site de documentation Perfetto pour plus d' informations.

Débogage de Malloc

Voir Malloc de débogage et desuivi mémoire natif à l'aide libc Callbacks pour une description complète des options de débogage disponibles pour des problèmes de mémoire natifs.

libmemunreachable

libmemunreachable d'Android est un détecteur de fuite de mémoire natif sans surcharge. Il utilise un passage de ramasse-miettes imprécis par marquage et balayage sur toute la mémoire native, signalant tous les blocs inaccessibles comme des fuites. Consultez la documentation libmemunreachable pour obtenir des instructions d'utilisation.

Crochets malloc

Si vous souhaitez créer vos propres outils, la libc d'Android prend également en charge l'interception de tous les appels d'allocation/gratuits qui se produisent pendant l'exécution du programme. Consultez la documentation malloc_hooks pour obtenir des instructions d'utilisation.

Statistiques malloc

Applications supports du mallinfo(3) et malloc_info(3) des extensions à <malloc.h> . La malloc_info fonction est disponible dans Android 6.0 (Guimauve) et supérieur et son schéma XML est documentée dans Bionic de <malloc.h> .

Serveur de surveillance de débogage Dalvik

Vous pouvez également utiliser le moniteur de débogage Dalvik serveur pour obtenir une vue graphique de Malloc sortie de débogage (DDMS).

Pour utiliser DDMS, commencez par activer son interface utilisateur de mémoire native :

  1. Ouvert ~/.android/ddms.cfg
  2. Ajoutez la ligne: native=true

Après avoir relancé DDMS et sélectionné un processus, vous pouvez basculer vers le nouvel onglet d'allocation native et le remplir avec une liste d'allocations. Ceci est particulièrement utile pour déboguer les fuites de mémoire.