Assainisseur d'adresse : HWASan/ASan
Les développeurs de la plate-forme Android utilisent HWAddressSanitizer (HWASan) pour trouver des bogues de mémoire en C/C++.
Vous pouvez flasher des images HWASan prédéfinies sur les 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 .Il approuve
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 de Perfetto pour plus d'informations.
Débogage de Malloc
Voir Débogage de Malloc et suivi 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
libmemunreachable d'Android est un détecteur de fuite de mémoire natif sans surcharge. Il utilise un passage de ramasse-miettes imprécis sur toute la mémoire native, signalant tous les blocs inaccessibles comme des fuites. Voir la documentation libmemunreachable pour les instructions d'utilisation.
Hameçons 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/libres qui se produisent pendant l'exécution du programme. Voir la documentation malloc_hooks pour les instructions d'utilisation.
Statistiques de Malloc
Android prend en charge les extensions mallinfo(3)
et malloc_info(3)
pour <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>
de Bionic.
Dalvik Debug Monitor Server
Vous pouvez également utiliser le Dalvik Debug Monitor Server (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 de la relance 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.