2010-09-22 3 views

Répondre

12

Mise à jour 2017:valgrind is available pour Android. La fonction de débogage malloc intégrée a été étendue de manière significative en Android N, et est très utile pour trouver des fuites de mémoire. Vous devrez peut-être _exit() l'application pour déclencher le vidage.

La fonctionnalité DDMS décrite ci-dessous obtient actuellement un brief mention dans les documents officiels.


Il existe une fonctionnalité expérimentale non prise en charge dont vous pouvez tirer parti.

Dans votre fichier de configuration DDMS (par exemple ~/.android/ddms.cfg sous Linux), ajoutez "native = true". Cela active l'onglet Heap natif.

Ensuite, activer le suivi de l'allocation de tas natif sur l'appareil, et redémarrez le cadre de l'application:

% adb shell setprop libc.debug.malloc 1 
% adb shell stop 
% adb shell start 

(Notez cela nécessite racine Notez également que cela ne concerne que les versions récentes, sur les versions plus anciens, vous aussi besoin. pour remplacer manuellement libc.so avec libc_debug.so dans/system/lib sur le périphérique.)

Vous pouvez déterminer si le périphérique a été configuré correctement en surveillant la sortie logcat lors de l'exécution d'une commande simple ("shell adb ls "). Si vous voyez:

I/libc (4847): ls using MALLOC_DEBUG = 1 (leak checker) 

alors vous savez que vous l'avez activé. Maintenant, vous pouvez utiliser les fonctionnalités de l'onglet Native Heap pour récupérer des instantanés de l'utilisation de la mémoire heap. DDMS extrait automatiquement les symboles des bibliothèques partagées dans votre arborescence source Android. Bien sûr, cela nécessite que vous ayez une arborescence source Android complète et que votre appareil exécute du code à partir de celui-ci. Si ce n'est pas le cas, les traces de la pile ne peuvent pas être décodées en noms de symboles, ce qui réduit l'utilité de la fonctionnalité.

+0

Je l'ai fait, mais nous ne pouvons pas confirmer que c'est une fuite de mémoire, il affiche juste les allocations de mémoire. – Vinay

+0

Droite. Vous devez regarder les allocations au fil du temps. Si elles se développent continuellement, vous comprendrez d'où vient la croissance à partir de la trace de la pile, et traquer à partir de là. Il n'y a pas encore de valgrind pour Android. – fadden

+2

Veuillez définir "versions récentes". – tomwhipple

0

U besoin de prendre l'instantané avant et après le test a couru. Puis appuyez sur le bouton +/- puis il indiquera l'emplacement de la mémoire conservée.

+0

Cette réponse ne fournit aucune valeur. – pkanev

0

J'ai utilisé dans JB, JB +, KITKAT et sucette également. Son très bon outil dans Android pour trouver les fuites.

+0

peut-être que vous pouvez partager une URL, merci –

Questions connexes