Address Sanitizer: HWASan/ASan
Les développeurs de la plate-forme Android utilisent HWAddressSanitizer (HWASan) pour détecter les bugs de mémoire en C/C++.
Vous pouvez flasher des images HWASan prédéfinies sur les appareils Pixel compatibles à partir de ci.android.com (instructions de configuration 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 enracinés. Vous trouverez des instructions sur le wiki ASan.Heapprofd
Android 10 est compatible avec tas profd, un profileur de segments de mémoire peu gourmand en ressources d'échantillonnage. heapprofd vous permet d'attribuer l'utilisation de la mémoire native à des piles d'appels de votre programme. Pour en savoir plus, consultez heapprofd - Android Heap Profiler sur le site de documentation de Perfetto.
Débogage malloc
Pour obtenir une description détaillée des options de débogage disponibles pour les problèmes de mémoire native, consultez les sections Débogage malloc et Suivi de la mémoire native à l'aide de rappels libc.
libmemunaccessible
La libmemunreachable d'Android est un détecteur de fuites de mémoire natif sans frais généraux. Il utilise un passage de récupération de mémoire par balayage et marquage imprécis sur toute la mémoire native, signalant les blocs inaccessibles comme des fuites. Pour en savoir plus, consultez la documentation de libmemunreachable.
Hooks malloc
Si vous souhaitez créer vos propres outils, la bibliothèque libc d'Android permet également d'intercepter tous les appels d'allocation et sans frais qui ont lieu pendant l'exécution du programme. Pour en savoir plus, consultez la documentation concernant malloc_hooks.
Statistiques malloc
Android accepte les extensions mallinfo(3)
et malloc_info(3)
dans <malloc.h>
.
La fonction malloc_info
est disponible dans Android 6.0 (Marshmallow) et les versions ultérieures, et son schéma XML est documenté dans <malloc.h>
de Bionic.
Serveur de surveillance de débogage Dalvik
Vous pouvez également utiliser le Dalvik Debug Monitor Server (DDMS) pour obtenir une vue graphique de la sortie de débogage Malloc.
Pour utiliser DDMS, activez d'abord son UI de mémoire native:
- Ouvrir
~/.android/ddms.cfg
- Ajoutez la ligne:
native=true
Après avoir relancé DCM et sélectionné un processus, vous pouvez basculer vers le nouvel onglet d'allocation native et le remplir avec une liste d'allocations. Cela est particulièrement utile pour déboguer les fuites de mémoire.