Google 致力于为黑人社区推动种族平等。查看具体举措
Cette page a été traduite par l'API Cloud Translation.
Switch to English

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

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:

  1. Ouvrez ~/.android/ddms.cfg
  2. 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.