Dois-je utiliser Helgrind ou DRD pour la détection des erreurs de thread?

On dirait que Valgrind a deux outils qui détectent les erreurs de thread: Helgrind et DRD. Ces outils sont essentiellement similaires.

Ma question principale est: quand devrais-je utiliser l'un au lieu de l'autre pour vérifier mon code multi-thread?

Plus largement, pourquoi y a-t-il deux outils? Je suppose qu'ils ne sont pas entièrement redondants. Quelles sont les différences importantes? Devrais-je généralement planifier l'exécution de mon code via les deux outils?

26
demandé sur Jeff Terrell Ph.D. 2011-11-16 23:43:49

4 réponses

Alors que Helgrind peut détecter les violations de l'ordre de verrouillage, pour la plupart des programmes, DRD a besoin de moins de mémoire pour effectuer son analyse. En outre, DRD prend en charge les threads détachés. Il y a aussi des différences plus subtiles - comparez les manuels respectifs si vous voulez en savoir plus. Voir aussi http://valgrind.org/docs/manual/hg-manual.html et http://valgrind.org/docs/manual/drd-manual.html.

7
répondu Bart Van Assche 2011-11-24 19:47:42

Si vous utilisez des primitives de synchronisation POSIX en plus des Mutex (par exemple, sémaphores, barrières, variables de condition, etc.), DRD vaut le coup - il peut identifier certains abus subtils que Helgrind ne détecte pas.

Cependant, DRD semble être beaucoup plus gourmand en ressources que Helgrind (dans Mes exécutions en utilisant 3.14.0, il semble y avoir une énorme quantité de surcharge CPU).

2
répondu jhfrontz 2018-02-27 16:44:28

Quand devrais-je utiliser l'un au lieu de l'autre pour vérifier mon code multi-thread?

Dépend de pour quoi vous voulez vérifier ce code.

Pour vérifier les courses de données, vous pouvez utiliser ThreadSanitizer .
comparaison avec DRD et autres .

1
répondu Employed Russian 2011-11-17 05:51:20

Un autre point à considérer: à partir de la version 3.6.0 de valgrind, DRD supporte les spinlocks pthread, mais pas helgrind. Je n'ai pas essayé la version 3.7.0, mais les notes de version me portent à croire que cela n'a pas changé.

0
répondu BD at Rivenhill 2012-08-03 21:50:17