【发布时间】:2011-03-09 06:55:24
【问题描述】:
我有一段代码,其中包含竞态条件...我知道这是一个竞态条件,因为它不会始终如一地发生,而且它似乎在双核机器上更频繁地发生。
当我追踪时,它永远不会发生。虽然,它也有可能是一个僵局。通过分析发生和未发生这种情况的日志完成阶段,我已经能够将此错误定位到单个函数。但是,我不知道这是在函数范围内发生的。它不在顶层。
如果是竞态条件,添加日志语句或断点会改变时间,并防止这种情况发生。
除了获得一个可以让我查明发生这种情况的竞争条件分析器之外,我还可以使用什么技术吗?
这是在 Visual Studio 9 中,使用 C++(非托管品种)。
【问题讨论】:
-
上次我遇到了严重的比赛状况,我在当地知道它发生在哪里。我以“老式方式”进行操作,并采用图形调用树并手动突出显示每个调用的锁定持续时间。在我的例子中,它被归为 2 个源文件和一些函数,但它被证明是无价的。
标签: c++ visual-studio-2008 conditional-statements race-condition