Désinfectant d'adresse: HWASan / ASan
Les développeurs de plates-formes Android utilisent HWAddressSanitizer (HWASan) pour rechercher des bogues de mémoire en C / C ++.
Vous pouvez flasher des images HWASan prédéfinies sur des appareils Pixel pris en charge à 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 rootés. Vous pouvez trouver des instructions sur le wiki ASan .Heapprofd
Android 10 prend en charge heapprofd, un profileur de tas d'échantillonnage à faible coût. 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 Malloc
Voir Débogage de Malloc etsuivi de la mémoire native à l'aide des rappels libc pour une description détaillée des options de débogage disponibles pour les problèmes de mémoire native.
libmemunreachable
Le libmemunreachable d'Android est un détecteur de fuite de mémoire natif sans surcharge. Il utilise un ramasse-miettes imprécis de marquage et de balayage sur toute la mémoire native, signalant tous les blocs inaccessibles comme des fuites. Consultez la documentation libmemunreachable pour les instructions d'utilisation.
Crochets Malloc
Si vous souhaitez créer vos propres outils, la libc d'Android prend également en charge l'interception de toutes les allocations / appels gratuits qui se produisent pendant l'exécution du programme. Consultez la documentation de malloc_hooks pour les instructions d'utilisation.
Statistiques de Malloc
Android prend en charge les mallinfo(3)
etmalloc_info(3)
vers <malloc.h>
. La fonction malloc_info
est disponible dans Android 6.0 (Marshmallow) et supérieur et son schéma XML est documenté dans <malloc.h>
.
Serveur de moniteur de débogage Dalvik
Vous pouvez également utiliser le serveur Dalvik Debug Monitor (DDMS) pour obtenir une vue graphique de la sortie de Malloc Debug.
Pour utiliser DDMS, activez d'abord son interface utilisateur de mémoire native:
- Ouvrez
~/.android/ddms.cfg
- Ajoutez la ligne:
native=true
Lors du redémarrage de DDMS et de la sélection d'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.