2009-03-30 2 views
1

J'ai une DLL Windows Visual Studio 8.0 C++ 32 bits (non.NET) qui semble occuper plus de mémoire que je ne le pensais. Je veux déterminer exactement où va la mémoire, pas seulement une seule figure de la mémoire totale utilisée (pas intéressé par les valeurs d'utilisation de la mémoire de Task Manager ou de Resource Monitor). De retour en 16 jours, HeapWalker était très utile et vous pouviez même sélectionner un handle BITMAP et voir son contenu graphique. J'essaie de me rappeler comment lire un fichier .MAP et additionner les différentes sections, mais il y a très peu de documentation et je ne suis pas sûr de la précision de cette technique. Quelqu'un a des conseils?Comment puis-je catégoriser l'utilisation de la mémoire d'une application/DLL NON-NET?

+0

peut certainement aider. –

Répondre

2

Si vous avez besoin de trouver la taille des différentes sections de la DLL, vous pouvez utiliser dumpbin.exe. C'est un outil de ligne de commande pour inspecter les DLL et les exécutables. Assurez-vous de lancer vcvars32.bat avant d'essayer de l'exécuter.

Pour regarder la consommation de mémoire réelle de votre DLL, je suggère de commencer par umdh.exe. Il est livré dans le cadre de Windbg de Microsoft. Tant que vous construisez vos fichiers avec un pdb, il sera capable de résoudre les symboles dans votre application. Vous pouvez ensuite prendre quelques photos de la mémoire pour rechercher des fuites. Vous pouvez également effectuer un vidage complet de toutes les allocations pour voir où la mémoire est allouée et combien est allouée.

+0

J'avais essayé d'exécuter dumpbin mais ai eu une erreur au sujet d'une DLL manquante. N'a pas pensé à lancer vcvars32! Je vais essayer vos suggestions. J'ai suivi les allocations dynamiques, mais le plus grand succès est la première fois que la DLL est chargée, donc je regarde la taille du code, les données statiques et autres. Merci d'avoir répondu. – AlanKley

Questions connexes