找到竞争条件错误

时间:2016-06-09 15:29:28

标签: c++ linux debugging race-condition

我正在调试一个复杂的多线程程序,可能仍然存在竞争条件错误。我目前正在通过对非确定性代码重复运行相同的单元测试来调试它,直到它失败。

我知道没有简单的解决方案,但是是否有一个启发式工具可以让系统的调度程序(Linux)在每次运行时更改抢占点,从而增加发现错误的可能性?

1 个答案:

答案 0 :(得分:0)

我知道有一个名为Jinx Debugger的工具可以执行此操作,但它已不再可用。

通常的解决方案是仔细分析代码,并“证明”锁定正确性。这有点艺术。

对于实验方法,您可以使用随机休眠的函数调用来检测代码,并运行很长时间。你的函数只能在一小部分时间内睡眠,随机几毫秒。