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