C#/.净分析工具,以找到比赛的条件/死
-
24-09-2019 - |
题
是有一个工具,分析。净码和找到比赛的条件是什么?
我有一位的代码有一个公共静态的财产,获取或创建私人静的领域。它也有一个公共静态的方法,集这一领域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
你有没有看着 红门的蚂蚁?我不知道这是否会做你需要的一切但这是一个良好的产品:
- 确定业绩的瓶颈在几分钟之内
- 优化。网应用程序的性能
- 钻到缓慢的代码有线水平的时间
- 配置文件aspx,ASP.NET C#代码,VB.NET 应用程序
不隶属于 StackOverflow