我正在调试一个复杂的多线程程序,它可能仍然存在竞争条件错误。我目前正在通过对非确定性代码重复运行相同的单元测试来调试它,直到它失败。
我知道没有简单的解决方案,但是否有一种启发式工具可以使系统的调度程序 (Linux) 在每次运行时更改抢占点,从而增加发现错误的可能性?
最佳答案
我知道一个叫做 Jinx Debugger 的工具这样做了,但它不再可用。
通常的解决方案是仔 segmentation 析代码,并“证明”锁定的正确性。这是一门艺术。
对于实验性方法,您可以使用执行随机休眠并长时间运行的函数调用来检测代码。您的函数只能休眠一小部分时间,随机几毫秒。
关于c++ - 查找竞争条件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37730262/