Je cherchais dans Valgrind pour aider à améliorer mon codage / débogage C lorsque j'ai découvert que c'était uniquement pour Linux - je n'ai aucun autre besoin ni intérêt de déplacer mon système d'exploitation vers Linux, donc je me demandais s'il existe un programme tout aussi bon pour Windows.
210
Réponses:
Quelques bons outils commerciaux:
la source
Comme l'a souligné jakobengblom2, valgrind a une combinaison d'outils. En fonction de celui dont vous parlez, il existe différentes contre-fenêtres. Je ne mentionnerai ici que l'OSS ou les outils gratuits.
1. MemCheck:
Dr. Memory. Il s'agit d'un outil relativement nouveau qui fonctionne très bien sous Windows 7. Ma fonctionnalité préférée est qu'il regroupe les piles d'allocation des mêmes fuites dans le rapport.
http://code.google.com/p/drmemory/
J'ai également utilisé UMDH ( http://support.microsoft.com/kb/268343 ) et l' ai trouvé silencieux utile et facile à configurer. Cela fonctionne de Win2000 à Win7.
AppVerifier est un incontournable de swissknife pour les développeurs de code natif Windows, son vérificateur de "mémoire" fait un travail similaire http://msdn.microsoft.com/en-us/library/dd371695%28v=vs.85%29.aspx
2. Callgrind:
Mon préféré est très endormi ( http://www.codersnotes.com/sleepy ) Il est minuscule mais très utile et facile à utiliser.
Si vous avez besoin de plus de fonctionnalités, AMD CodeAnalyst ™ Performance Analyzer est gratuit: http://developer.amd.com/documentation/videos/pages/introductiontoamdcodeanalystperformanceanalyzer.aspx
Les outils d'analyse des performances de Windows sont gratuits de Microsoft, pas très faciles à utiliser mais peuvent faire le travail si vous êtes prêt à passer du temps. http://blogs.microsoft.co.il/blogs/sasha/archive/2008/03/15/xperf-windows-performance-toolkit.aspx Télécharger: http://msdn.microsoft.com/en-us/performance / cc752957
3. Massif:
Des outils gratuits similaires (pas tout à fait exacts) sur les fenêtres sont:
VMMap de sysinternals: http://technet.microsoft.com/en-us/sysinternals/dd535533
! commande heap dans windbg: http://hacksoflife.blogspot.com/2009/06/heap-debugging-memoryresource-leak-with.html
4. Cachegrind:
Les outils de performances Windows mentionnés ci-dessus ont un certain niveau de capacité de profilage des échecs de cache L2 mais pas aussi bon et facile à utiliser que Cachegrind.
5. DRD:
Je n'ai encore rien trouvé de gratuit et aussi puissant sur Windows, le seul outil gratuit pour Windows que je trouve légèrement proche est le vérificateur de "verrouillage" dans AppVerifier: http://msdn.microsoft.com/en-us/library /dd371695%28v=vs.85%29.aspx
la source
Pourquoi ne pas utiliser Valgrind + Wine pour déboguer votre application Windows? Voir http://wiki.winehq.org/Wine_and_Valgrind
(Chromium l'utilise pour rechercher des erreurs de mémoire dans la version Windows; consultez build.chromium.org et examinez les cascades expérimentales ou de mémoire et recherchez wine.)
Il y a aussi le Dr Memory, voir dynamorio.org/drmemory.html
la source
Pour Visual C ++, essayez Visual Leak Detector . Lorsque je l'ai utilisé, il a détecté une fuite de mémoire lors d'un
new
appel et a renvoyé la ligne réelle dans le code source de la fuite. La dernière version peut être trouvée à http://vld.codeplex.com/ .la source
L'environnement de développement pour Windows que vous utilisez peut contenir ses propres outils. Visual Studio, par exemple, vous permet de détecter et d'isoler les fuites de mémoire dans vos programmes
la source
je voudrais énumérer un outil, l'espoir sera utile
lire cet article pour plus de détails
la source
Essayez DUMA
la source
Il existe une partie Pageheap.exe des outils de débogage pour Windows. C'est gratuit et c'est essentiellement un allocateur / désallocateur de mémoire personnalisé.
Voir http://support.microsoft.com/kb/286470
la source
gflags
+gdb
(de mingw) utile pour le diagnostic.En combinaison avec Visual Studio, j'utilise généralement Visual Leak Detector ou simplement _CrtDumpMemoryLeaks () qui est un appel api win32. Les deux n'ont rien d'extraordinaire mais ils font le travail.
la source
J'ai eu la chance d'utiliser Compuware DevPartner Studio dans le passé et c'était vraiment bien, mais c'est assez cher. Une solution moins chère pourrait être GlowCode , je viens de travailler avec une version 5.x et, malgré certains problèmes de connexion à un processus dont j'avais besoin pour déboguer, cela fonctionnait assez bien.
la source
J'ai loving Memory Validator , d'une compagnie appelée vérification du logiciel.
la source
Viusual Studio peut aider à détecter lui-même les fuites de mémoire. Voir Trucs et astuces Microsoft Visual C ++ -> section "Fuites de mémoire". Voir aussi ce post dans SO
Bien que le traçage réel ne soit possible qu'avec Team Edtion de Visual Studio.
la source
Voir le lien " Outils de test source " sur la page Test de contrôle qualité logiciel et ressources des outils de test pour une liste d'outils similaires.
J'ai utilisé BoundsChecker, DevPartner Studio et Intel V-Tune dans le passé pour le profilage. J'ai préféré V-Tune; vous pourriez émuler divers chipsets Intel et cela vous donnerait des conseils sur la façon d'optimiser pour cette plate-forme.
la source
Le détecteur de fuite de mémoire de Jochen Kalmbach est-il qualifié?
PS: L'URL de la dernière version est enterrée quelque part dans le fil de commentaires de l'article.
la source
LeakDiag, UMDH, App Verifier, DebugDiag, sont tous des outils utiles pour améliorer la robustesse du code et trouver les fuites de mémoire.
la source
La bibliothèque Boost Test peut détecter les fuites de mémoire.
la source
Et le Purify ?
la source
Essayez le produit Inspector XE d'Intel qui peut vous aider à détecter à la fois les problèmes de mémoire et de thread: http://software.intel.com/en-us/articles/intel-inspector-xe/
la source
Peut-être que CodeSnitch serait quelque chose que vous recherchez? http://www.entrek.com/codesnitch.html
la source
Si vous développez avec Borland / CodeGear / Embarcadero C ++ Builder, vous pouvez utiliser CodeGuard.
la source
Plus ou moins tous les Profileurs incluent la vérification des fuites de mémoire et vous montrent la pile lorsque la mémoire a été allouée.
Je peux recommander Intels Parallel Inspector . Simple à utiliser et aucune recompilation nécessaire. La version d'essai dure 30 jours.
GlowCode et AtromatedQA incluent également de telles capacités. Ils offrent tous des essais gratuits.
Compuware DevPartner (alias BoundsChecker) dans Contrast a besoin d'une recompilation "d'instrumentation" ralentie et l'application s'exécute également plus lentement lors de la recherche d'erreurs. Et BoundsChecker ne peut pas du tout fonctionner avec des évsrions 64 bits. Nous avons abandonné cet outil.
la source
Le meilleur outil que j'ai jamais utilisé est DevPartner BoundsChecker - ce n'est pas gratuit mais il a une période d'évaluation.
la source
Un autre outil de mémoire pour votre liste: Validateur de mémoire .
Pas gratuit, mais loin d'être aussi cher que Purify ou Boundschecker.
la source
Si vous n'avez pas peur de mingw, voici quelques liens (certains pourraient fonctionner avec MSVC) ... http://betterlogic.com/roger/?p=1140
la source
Nous venons de terminer un outil de vérification de la sécurité de la mémoire pour Windows, qui gère GCC et Micrsoft Visual C (pas encore C ++), et recherchons des testeurs bêta.
EDIT 12 juin 2011: Plus de version bêta, maintenant en production pour GCC et Microsoft Visual Studio C.
la source
J'ai trouvé ce projet SF aujourd'hui:
http://sourceforge.net/p/valgrind4win/wiki/Home/
Ils portent valgrind sur Windows. Probablement dans plusieurs années, nous aurons un valgrind fiable sur les fenêtres.
la source
Consultez cette question: existe-t-il un bon substitut Valgrind pour Windows? . Bien que le substitut général de valgrind soit demandé, il traite principalement des détecteurs de fuite de mémoire et non des détections de conditions de course.
la source
J'ai utilisé Insure ++ qui fait un excellent travail pour trouver les fuites / corruptions de mémoire c ++ et de nombreux autres bugs comme les variables non initialisées, les erreurs de pointeur, les chaînes, etc. votre code .. Vous pouvez l'essayer pour la version trail ..
la source
Vous pouvez lire ce que Mozilla fait en ce qui concerne les fuites de mémoire. Un outil dans leur boîte à outils est le collecteur de déchets Hans Boehm utilisé comme détecteur de fuite de mémoire.
la source
Vous pouvez essayer la version d'essai de RuntimeChecker ou la version d' essai d' IBM Purify .
Une solution gratuite serait d'utiliser le code suivant dans Visual Studio:
Écrivez simplement ceci en haut de tous vos fichiers cpp. Cela détectera les fuites de mémoire de votre application lors de l'arrêt du débogage et les répertoriera dans la fenêtre de sortie. Double-cliquez sur une ligne de fuites de mémoire pour mettre en évidence la ligne où la mémoire est allouée et jamais libérée. Cela peut vous aider: http://www.flipcode.com/archives/How_To_Find_Memory_Leaks.shtml
la source