Question

J’étais à la recherche de Valgrind pour améliorer mon codage / débogage C lorsque j’ai découvert que c’était uniquement pour Linux - je n’ai plus besoin ni d’intérêt de migrer mon système d’exploitation vers Linux. Je me demandais s’il existait un aussi bon programme pour Windows.

Était-ce utile?

La solution

Quelques autres bons outils commerciaux:

Autres conseils

Comme l'a souligné jakobengblom2, Valgrind dispose d'une panoplie d'outils. En fonction de celui dont vous parlez, il existe différentes parties de compteur Windows. Je ne mentionnerai que les logiciels libres ou OSS ici.

1. MemCheck:

Dr. Mémoire. C’est un outil relativement nouveau qui fonctionne très bien sous Windows 7. Ma fonctionnalité préférée est de regrouper les mêmes piles d’allocation dans le rapport.

http://code.google.com/p/drmemory/

J'ai également utilisé UMDH ( http://support.microsoft.com/kb/268343) et trouvé silencieux utile et facile à installer. Cela fonctionne de Win2000 à Win7.

AppVerifier est un outil indispensable pour les développeurs de code natif de Windows, sa "mémoire". vérificateur fait un travail similaire http://msdn.microsoft.com/en -us / library / dd371695% 28v = vs.85% 29.aspx

2. Callgrind:

Mon préféré est verysleepy ( 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 & # 8482; Performance Analyzer est gratuit:

Les outils d'analyse de performance Windows sont gratuits chez Microsoft. Ils ne sont pas très faciles à utiliser, mais ils peuvent faire le travail si vous êtes prêt à dépenser votre 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:

Les outils gratuits similaires (sans correspondance exacte) sur Windows 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 performance Windows mentionnés ci-dessus ont un certain niveau de capacité de profilage de cache L2, mais ils ne sont pas aussi bons et faciles à utiliser que Cachegrind.

5. DRD:

Je n'ai encore rien trouvé de plus gratuit et aussi puissant sur Windows, le seul outil gratuit pour les fenêtres légèrement plus proche que je puisse trouver est le "verrou". vérificateur dans AppVerifier: http://msdn.microsoft.com/en -us / library / dd371695% 28v = vs.85% 29.aspx

Pourquoi ne pas utiliser Valgrind + Wine pour déboguer votre application Windows? Voir    http://wiki.winehq.org/Wine_and_Valgrind

(Chromium utilise ceci pour vérifier la version Windows des erreurs de mémoire; voir   build.chromium.org et observez les cascades expérimentales ou à mémoire et cherchez le vin.)

Il y a aussi le Dr. Memory, voir   dynamorio.org/drmemory.html

Pour Visual C ++, essayez Détecteur de fuite visuel . Lorsque je l'ai utilisé, il a détecté une fuite de mémoire à partir d'un appel new et a renvoyé la ligne réelle dans le code source de la fuite. La dernière version est disponible à l'adresse http://vld.codeplex.com/ .

L’environnement de développement Windows que vous utilisez peut contenir ses propres outils. Visual Studio, par exemple, vous permet de détecter et isoler la mémoire fuites dans vos programmes

je voudrais énumérer un outil, j'espère que cela sera utile

lisez cet article pour plus de détails

  1. Purifier
  2. Bounds Checker
  3. Coverity (fondamentalement, c’est un analyseur de code, mais il va attraper une fuite de mémoire en statique)
  4. Code de préchauffage
  5. dmalloc
  6. ccmalloc
  7. NJAMD
  8. YAMD
  9. Valgrind
  10. mpatrol
  11. Assurez ++

Essayez DUMA

Il existe une partie Pageheap.exe des outils de débogage pour Windows. C'est gratuit et est fondamentalement un allocateur / désallocateur de mémoire personnalisé.

Voir http://support.microsoft.com/kb/286470

En combinaison avec Visual Studio, j'utilise généralement Détecteur de fuite visuel ou simplement _CrtDumpMemoryLeaks (), qui est une API win32. appel. Les deux ne sont rien d'extraordinaire mais ils font le travail.

J'ai eu la chance d'utiliser Compuware DevPartner Studio et C'était vraiment bien, mais c'est assez cher. Une solution moins coûteuse pourrait être GlowCode , je viens de travailler avec une version 5.x et, malgré certains problèmes en joignant à un processus que j'avais besoin de déboguer, cela a très bien fonctionné.

J'adore le Validateur de mémoire , de la société Software. Vérification.

Viusual Studio peut vous aider à détecter lui-même les fuites de mémoire. Consultez les trucs et astuces Microsoft Visual C ++ - > "Fuites de mémoire" section. Voir aussi ce publier dans un ordre de paiement

Bien que le traçage réel ne soit possible qu'avec Team Edition de Visual Studio.

Voir les " Outils de test des sources " Cliquez sur le lien sur la page Ressources logicielles de test d’assurance qualité et de tests pour obtenir la liste des outils similaires.

J'ai déjà utilisé BoundsChecker, DevPartner Studio et Intel V-Tune pour le profilage. J'ai aimé V-Tune le meilleur; vous pouvez émuler divers chipsets Intel, ce qui vous donnera des conseils pour optimiser cette plate-forme.

Le le détecteur de fuite de mémoire de Jochen Kalmbach est-il qualifié?

PS: l'URL de la dernière version est enterré quelque part dans le fil de commentaire de l'article.

LeakDiag, UMDH, le vérificateur d’application, DebugDiag - sont des outils utiles pour améliorer la robustesse du code et détecter les fuites de mémoire.

La bibliothèque Boost Test peut détecter les fuites de mémoire.

Qu'en est-il de la Purify ?

Essayez le produit Intel Inspector XE qui peut vous aider à détecter les problèmes de mémoire et de threads: http://software.intel.com/en-us/articles/intel-inspector-xe/

Peut-être que CodeSnitch serait quelque chose que vous recherchez? http://www.entrek.com/codesnitch.html

Si vous développez avec Borland / CodeGear / Embarcadero C ++ Builder, vous pouvez utiliser CodeGuard.

Plus ou moins tous les profilers incluent la recherche de fuites de mémoire et vous indiquent 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'évaluation dure 30 jours.

GlowCode et AtromatedQA inclut également de telles capacités. Ils offrent tous des essais gratuits.

Compuware DevPartner (également appelé BoundsChecker) dans Contrast nécessite une "instrumentation" ralentie. recompiler et l'application s'exécute également plus lentement lors de la vérification des erreurs Et BoundsChecker ne peut pas du tout fonctionner avec les évaluations 64 bits. Nous avons abandonné cet outil.

Le meilleur outil que j'ai jamais utilisé est DevPartner BoundsChecker - ce n'est pas gratuit, mais a une période d'évaluation.

Un autre outil de mémoire pour votre liste: Validateur de mémoire .

Pas gratuit, mais loin d'être aussi coûteux que Purify ou Boundschecker.

Si vous n’avez pas peur de mingw, voici quelques liens (certains peuvent fonctionner avec MSVC) ... http://betterlogic.com/roger/?p=1140

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 bêta-testeurs.

EDIT le 12 juin 2011: Plus de la version bêta, maintenant la production pour GCC et Microsoft Visual Studio C.

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 disposerons d’un système fiable pour les fenêtres.

Découvrez cette question: Existe-t-il un bon substitut de Valgrind à Windows? ? . Bien que le substitut général à valgrind soit demandé, il aborde principalement les détecteurs de fuite de mémoire et non les détections de conditions de course.

J’ai utilisé Insure ++, qui fait un excellent travail pour rechercher les fuites / corruptions de mémoire c ++ et de nombreux autres bugs tels que les variables non initialisées, les erreurs de pointeur, les chaînes, etc. et l'utilisation de la mémoire d'exécution, etc., ce qui donne plus de confiance en votre code. Vous pouvez l'essayer pour la version d'évaluation.

Vous voudrez peut-être lire ce que fait par Mozilla concernant les fuites de mémoire. Le ramasse-miettes Hans Boehm est l'un de leurs outils. Il est utilisé comme détecteur de fuite de mémoire. .

Vous pouvez essayer tester RuntimeChecker pour version d'évaluation d'IBM Purify

.

Une solution gratuite consisterait à utiliser le code suivant dans Visual Studio:

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

É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 listera dans la fenêtre de sortie. Un double clic sur une ligne de fuite de mémoire vous indique 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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top