是有一个工具,分析。净码和找到比赛的条件是什么?

我有一位的代码有一个公共静态的财产,获取或创建私人静的领域。它也有一个公共静态的方法,集这一领域null(...是的,我知道了..)

有没有锁绕这些方法,这是一个安全的赌注,事情就会可怕的错误的未来。我需要一个工具,可通过递归的事情,呼吁这些方法,看看如果有什么是产生于另外一个线程。

我在寻找一个工具,或也许是一个nDepend SQL脚本(如果这是可能的)。

有帮助吗?

解决方案

你可能是在寻找一个这些:


注意到:这答案是从2010年。如同所有建议的答案,建议倾向于随着时间而改变。可能还有其他产品的出现,国际象棋,这是一个微软研究实验室项目可能已演变成一个最终产品或报废。请把这个回答一粒盐和进行新的研究成哪些产品是合适的。

其他提示

金克斯将做到这一点在运行时(不是静态),但它可能是值得考虑的。

您可能想看看 CHESS

我一直在尝试,关于如何轻松地跟踪那些。我一直在跟踪一些死锁,特别是对其中使用许多不同的锁语句的情况。

我的目标是它们发生之前检测死锁,例如如果你有两个资源,你知道你必须以相同的顺序总是使用它们,否则死锁的可能的发生。

lock (lockObj1) 
lock (lockObj2) 
{ 
    // some code
} 

...其他的应用程序的某个地方......

lock (lockObj2) 
lock (lockObj1) // <- I expect some "possible deadlock" detection here 
{ 
    // some code
} 

在这种情况下,我在一个地方使用lockObj1然后lockObj2并在另一个地方以相反的顺序使用它们,这一点你会喜欢以避免在应用程序 当然,也不需要锁的语句做的是使用一个其他类似的例子中,你的复杂的应用程序可能会与对方

交互几个复杂的对象后

我已上载的代码与所述测试用例这里 https://github.com/glmnet/LockTracer

看到这里的答案:什么静态分析工具可用于C# ?

一些静态分析工具可以做死锁检测。

另外,尝试的FxCop 来自Microsoft。

你有没有看着 红门的蚂蚁?我不知道这是否会做你需要的一切但这是一个良好的产品:

  • 确定业绩的瓶颈在几分钟之内
  • 优化。网应用程序的性能
  • 钻到缓慢的代码有线水平的时间
  • 配置文件aspx,ASP.NET C#代码,VB.NET 应用程序
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top