6
votes

Comment fusionner les rapports de Valgrind Memcheck de plusieurs courses du même processus?

J'ai un ensemble de tests d'acceptation qui fonctionnent tous les soirs. J'aimerais utiliser Valgrind pour vérifier les fuites de mémoire dans mon code automatiquement sous forme de sécurité supplémentaire pour vérifier manuellement des fuites. Mise à jour de 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.

Y a-t-il un outil capable de fusionner ces rapports? J'ai vu Valkyrie, mais selon les docs, ils ne soutiennent pas Valgrind 3.5


1 commentaires

Même problème. Conclusion Pour l'instant: Écrivez un script :) Je suis intéressé si vous avez trouvé un tel outil ...


3 Réponses :


1
votes

Si votre code est principalement propre, vous pouvez simplement conserver les cas d'erreur.

Si vous allez à droite un outil pour combiner les sorties, le format de sortie Valgrind XML pourrait être la bonne chose à commencer. Au moins, l'analyse ne devrait pas être trop difficile. Vous pouvez également émettre le journal de Valgrind à un fichier différent pour le séparer de la sortie des programmes. De plus, vous pouvez obtenir Valgrind pour donner une erreur lorsqu'il détecte une fuite de mémoire avec - Error-sitcode = . .

Vous devrez toujours décider de ce qui compte comme la même fuite de mémoire, lors de la comparaison des fuites.


2 commentaires

Étant donné qu'il peut y avoir des milliers de rapports produits, il peut être difficile de trouver les cas d'erreur. Il y aura beaucoup de cas d'erreur aussi bien que je sais qu'il y a de bonnes fuites là-bas. Il y aura aussi beaucoup de doublons que j'espérais que tout outil de fusion se combinerait dans un seul rapport principal pour moi.


D'où mon "si ton code est la déclaration essentiellement propre". La fusion serait délicate dans tous les cas, comme il serait nécessaire de décider de la quantité de trace de la traçabilité lors de la comparaison.



0
votes

Un moyen de résoudre votre problème devrait être d'ajouter - Gen-Suppressions = All Option et concatez toutes les erreurs ignorées dans votre Fichiers de suppressions . Vous devez trier les vraies fuites et fausses fuites manuellement, mais une fois que cela est fait, Valgrind n'imprimera que de vraies fuites.

Puis, si les rapports ont écrit quelque chose, il est peut-être que vous devez résoudre les fuites de mémoire avant de continuer.

- une option silencieuse est nécessaire: exécutez silencieusement et seulement les messages d'erreur d'impression. Utile si vous exécutez des tests de régression ou si vous avez d'autres machines de test automatisées.


0 commentaires

0
votes

Les nouvelles versions de Valkyrie (le compagnon d'interface graphique à Valgrind) ont ce que vous recherchez.

$ 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


1 commentaires

Malheureusement, vk_logmerge n'existe plus dans Ubuntu / Debian et la source amont