2011-03-15 87 views
6

最近我一直在研究一個多線程程序,它具有非常複雜的鎖定不變量。我希望檢查程序中是否存在可能的死鎖或競爭,但是典型的單元測試可能不會顯示這種情況,因爲線程計時可能恰好以即使存在錯誤也會導致測試通過的方式發生在代碼中。搞亂線程計時的工具?

我很好奇,如果有一個工具在那裏混亂三時的方式,允許測試多次運行,每次不同的線程獲得不同的時間片以不同的順序。這樣的工具是否存在?還是有另一個好的工具,可以使調試更容易?

這個程序是用C語言編寫的,但我會用任何語言來回答,因爲我主要是好奇那裏有什麼東西,即使這裏不直接適用。

回答

4

檢出Helgrind一個建立在Valgrind上的工具。它看起來比較挑剔與哪個gcc版本配合使用,但值得一看。

+0

這是一個很好的鏈接;感謝分享! – templatetypedef 2011-03-15 19:59:28