有没有工具可以分析.NET代码并找到竞态条件?
我有一些代码,它有一个公共静态属性,用于获取或创建私有静态字段。它还有一个公共静态方法,将该字段设置为null (...yes,我知道!..)
由于这两种方法都没有锁,所以可以肯定的是,将来事情会变得非常糟糕。我需要一个工具,它可以递归地遍历调用这两个方法中的任何一个方法,并查看是否在另一个线程上产生了任何东西。
我正在寻找一个工具或者一个nDepend SQL脚本(如果可能的话)。
发布于 2010-03-04 21:38:25
你可能正在寻找其中的一个:
注释:这个答案来自2010年。与所有推荐答案一样,推荐往往会随着时间的推移而变化。现在可能还有其他的产品,国际象棋,这是微软研究实验室的项目,可能已经演变成最终产品或被完全废弃。请对这一答案持保留态度,并对目前哪些产品适合进行新的研究。
发布于 2010-03-04 21:39:49
Jinx将在运行时(而不是静态地)执行此操作,但它可能值得一看。
发布于 2015-04-27 20:55:55
我一直在试验如何轻松地跟踪这些数据。我一直在跟踪一些死锁,特别是在使用了许多不同的锁语句的情况下。
我的目标是在死锁发生之前检测到它们,例如,如果你有两个资源,你知道你必须始终以相同的顺序使用它们,否则可能会发生死锁。
lock (lockObj1)
lock (lockObj2)
{
// some code
} ..。在应用程序中的其他地方...
lock (lockObj2)
lock (lockObj1) // <- I expect some "possible deadlock" detection here
{
// some code
} 在这种情况下,我在一个地方使用lockObj1,然后在另一个地方以相反的顺序使用它们,这是您希望在应用程序中避免的事情。当然,锁语句不需要像示例中那样一个接一个地使用,您的复杂应用程序可能有几个相互交互的复杂对象
我已经在这里上传了带有测试用例的代码https://github.com/glmnet/LockTracer
https://stackoverflow.com/questions/2379610
复制相似问题