2011-11-16 59 views
24

看起來像Valgrind有兩個工具都可以執行線程錯誤檢測:HelgrindDRD。這些工具非常相似。我應該使用Helgrind還是DRD進行線程錯誤檢測?

我的主要問題是:什麼時候應該使用一個而不是另一個來檢查我的多線程代碼?

更廣泛地說,爲什麼會有兩種工具?我認爲他們並不完全是多餘的。有什麼重要的區別?我應該通常計劃通過這兩種工具來運行我的代碼嗎?

+0

如果我沒有錯,DRD主要比Helgrind更新。好問題,雖然 – sehe

回答

1

還有一點需要考慮:從valgrind版本3.6.0開始,DRD支持pthread自旋鎖,但helgrind不支持。我還沒有嘗試過3.7.0,但發行說明讓我相信這並沒有改變。

+5

從3.5.0開始,helgrind支持pthread_spinlock:http://valgrind.org/docs/manual/dist.news.html – leecbaker

1

如果您使用除互斥鎖以外的任何POSIX同步原語(例如信號量,障礙,條件變量等),DRD值得一試 - 它可以識別Helgrind未檢測到的一些細微誤用。

但是,DRD似乎比Helgrind更耗費資源(在使用3.14.0的我的運行中似乎有大量的CPU開銷)。

相關問題