2010-06-24 17 views
3

J'ai un ensemble de tests d'acceptation qui se déroulent tous les soirs. Je voudrais utiliser valgrind pour vérifier automatiquement les fuites de mémoire dans mon code comme une sécurité supplémentaire pour vérifier manuellement les fuites. Mettre à jour mes scripts pour exécuter mes processus sous valgrind est trivial, cependant, chaque test démarre et arrête un certain nombre de processus et il y a environ 15 000 cas de test, donc je finirai avec des milliers de rapports individuels.Comment puis-je fusionner les rapports de contrôle de validation Valgrind à partir de plusieurs exécutions du même processus?

est-il un outil qui est capable de fusionner ces rapports? Je l'ai vu valkyrie, mais selon les documents qu'ils ne soutiennent pas valgrind 3.5

+0

Même problème. Conclusion pour le moment: écrivez un script :) Je suis intéressé si vous avez trouvé un tel outil ... – neuro

Répondre

1

Si votre code est surtout propre, alors vous pouvez garder les cas d'erreur.

Si vous allez à droite un outil pour combiner les sorties, le format de sortie xml valgrind pourrait être la bonne chose pour commencer. Au moins, l'analyse ne devrait pas être trop difficile. Vous pouvez également afficher le journal valgrind dans un fichier différent pour le séparer de la sortie des programmes. Aussi, vous pouvez obtenir valgrind pour donner une erreur quand il détecte une fuite de mémoire avec --error-exitcode=.

Vous aurez encore à décider ce qui compte que la même fuite de mémoire, lorsque l'on compare les fuites.

+0

étant donné qu'il peut y avoir des milliers de rapports produits juste en trouvant l'erreur les cas peuvent être difficiles. Il y aura beaucoup de cas d'erreur et je sais qu'il y a beaucoup de fuites là-dedans. Il y aura aussi beaucoup de doublons que j'espérais que n'importe quel outil de fusion combinerait dans un rapport principal pour moi. – Glen

+0

D'où mon "si votre code est la plupart du temps propre" déclaration. la fusion serait difficile dans tous les cas, car elle devrait décider quelle proportion de la trace importait lors de la comparaison. –

0

Une façon de résoudre votre problème devrait être d'ajouter l'option --gen-suppressions=all, et de concaténer toutes les erreurs ignorées dans votre suppressions files. Vous devez trier les vraies fuites et les fausses fuites manuellement, mais une fois que c'est fait, valgrind n'imprimera que les vraies fuites.

Ensuite, si les rapports ont écrit quoi que ce soit, il est peut-être que vous devez résoudre les fuites de mémoire se déroulent avant.

--quiet Une option est nécessaire: Exécuter en mode silencieux et imprimer uniquement les messages d'erreur. Utile si vous effectuez des tests de régression ou avez d'autres machines de test automatisées.

0

Les nouvelles versions de Valkyrie (Le compagnon GUI pour Valgrind) a ce que vous cherchez.

$ man valkyrie 
NAME 
    valkyrie - graphical front-end to the Valgrind suite of tools for debugging and profiling Linux executables 

SYNOPSIS 
    valkyrie [valkyrie-opts] [valgrind-opts] [prog-and-args] 

<snip> 
    --merge <loglist> 
      Merge multiple logfiles, discarding duplicate errors 

Il y a aussi une CLI seule variante, appelée vk_logmerge. Il est disponible dans le package valkyrie si vous utilisez Ubuntu.