2016-06-09 58 views
0

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

我知道有没有简单的解决方案,但有一个探索性的工具,这使得该系统的调度程序(Linux)的更改抢占点,在每次运行,增加了发现错误的可能性有多大?

+0

用什么语言写的程序? – jgr208

+0

语言是C++ – tmlen

+0

你可以从源代码编译还是只有二进制文件? – jgr208

回答

0

我认识一个叫Jinx Debugger是这样做的工具,但它已不再可用。

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

对于实验方法,你可以用仪器函数调用是做随机睡觉的代码,并运行很长一段时间。你的功能只能占用一小部分时间,随机几毫秒。