我最近一直致力于一个多线程程序,它具有非常复杂的锁定不变量。我希望检查程序中是否存在死锁或竞争,但是典型的单元测试可能不会显示这一点,因为即使存在错误,线程计时可能恰好以导致测试通过的方式运行在代码中。
我很好奇是否有一个工具可以通过多种方式来处理三次计时,允许多次运行测试,每次使用不同的线程以不同的顺序获得不同的时间片。这样的工具存在吗?或者是否有另一个好的工具可以使调试更容易?
这个程序是用C语言编写的,但我会用任何语言学习答案,因为我很好奇那里有什么,即使它不是直接适用于此。
答案 0 :(得分:4)
查看Helgrind Valgrind上构建的工具。对它使用的gcc版本似乎相当挑剔,但值得一看。
答案 1 :(得分:3)
如果您使用的是Windows平台,那么Microsoft Research has their CHESS project目前仅支持VS2008。