首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于查找争用条件/死锁的C#/.NET分析工具

用于查找争用条件/死锁的C#/.NET分析工具
EN

Stack Overflow用户
提问于 2010-03-04 21:35:47
回答 6查看 20.8K关注 0票数 41

有没有工具可以分析.NET代码并找到竞态条件?

我有一些代码,它有一个公共静态属性,用于获取或创建私有静态字段。它还有一个公共静态方法,将该字段设置为null (...yes,我知道!..)

由于这两种方法都没有锁,所以可以肯定的是,将来事情会变得非常糟糕。我需要一个工具,它可以递归地遍历调用这两个方法中的任何一个方法,并查看是否在另一个线程上产生了任何东西。

我正在寻找一个工具或者一个nDepend SQL脚本(如果可能的话)。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-03-04 21:38:25

你可能正在寻找其中的一个:

  • CHESS
  • Typemock Racer

注释:这个答案来自2010年。与所有推荐答案一样,推荐往往会随着时间的推移而变化。现在可能还有其他的产品,国际象棋,这是微软研究实验室的项目,可能已经演变成最终产品或被完全废弃。请对这一答案持保留态度,并对目前哪些产品适合进行新的研究。

票数 20
EN

Stack Overflow用户

发布于 2010-03-04 21:39:49

Jinx将在运行时(而不是静态地)执行此操作,但它可能值得一看。

票数 4
EN

Stack Overflow用户

发布于 2015-04-27 20:55:55

我一直在试验如何轻松地跟踪这些数据。我一直在跟踪一些死锁,特别是在使用了许多不同的锁语句的情况下。

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

代码语言:javascript
复制
lock (lockObj1) 
lock (lockObj2) 
{ 
    // some code
} 

..。在应用程序中的其他地方...

代码语言:javascript
复制
lock (lockObj2) 
lock (lockObj1) // <- I expect some "possible deadlock" detection here 
{ 
    // some code
} 

在这种情况下,我在一个地方使用lockObj1,然后在另一个地方以相反的顺序使用它们,这是您希望在应用程序中避免的事情。当然,锁语句不需要像示例中那样一个接一个地使用,您的复杂应用程序可能有几个相互交互的复杂对象

我已经在这里上传了带有测试用例的代码https://github.com/glmnet/LockTracer

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2379610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档