J'essaie de détecter les bogues "Use after free()", autrement connus sous le nom de "Dangling pointers". Je sais que Valgrind peut être utilisé pour détecter les bogues "Use after free" sur la plate-forme *nix, mais qu'en est-il de Windows ? Et si je n'ai pas les sources ? Existe-t-il un meilleur programme que Valgrind pour détecter tous les pointeurs pendants dans un programme ? Un logiciel libre et ouvert serait préférable, mais je suis prêt à utiliser une solution commerciale si elle peut faire l'affaire.
Réponses
Trop de publicités?Vous pouvez utiliser gflags.exe
et le Outils de débogage pour Windows pour activer la vérification du tas dans un processus :
Cela fait un moment que je ne l'ai pas utilisé, et je ne me souviens honnêtement pas de la manière dont il interagit avec le tas du runtime C par rapport au gestionnaire de tas de Windows (pour s'assurer que chaque fichier de type malloc()
/ free()
/ new
/ delete
est vérifié séparément).
Gratuit, mais pas open source.
Il n'est pas tout à fait aussi bon que Valgrind, mais le programme de Microsoft Vérificateur d'application remplit une fonction similaire pour Windows. Il vous permet également de simuler des conditions d'erreur pour la plupart des API afin de vous indiquer si les choses vont exploser au visage de votre client le plus important :)
Il y a des années, j'ai utilisé Purifier à cette fin. Il existe depuis longtemps et était assez bon lorsque je l'ai utilisé.
Voir CheckPointer, notre Contrôleur de sécurité de la mémoire pour C . Il faut avoir le code source, mais il fonctionne sous Windows.
- Réponses précédentes
- Plus de réponses