我正在调试一个复杂的多线程程序,可能仍然存在竞争条件错误。我目前正在通过对非确定性代码重复运行相同的单元测试来调试它,直到它失败。
我知道没有简单的解决方案,但是是否有一个启发式工具可以让系统的调度程序(Linux)在每次运行时更改抢占点,从而增加发现错误的可能性?
答案 0 :(得分:0)
我知道有一个名为Jinx Debugger的工具可以执行此操作,但它已不再可用。
通常的解决方案是仔细分析代码,并“证明”锁定正确性。这有点艺术。
对于实验方法,您可以使用随机休眠的函数调用来检测代码,并运行很长时间。你的函数只能在一小部分时间内睡眠,随机几毫秒。