有没有针对.NET的测试工具可以更容易地发现线程问题?
我想到的是,当我运行(单元、组件、集成或系统)测试时,它会向每个线程注入随机休眠,以便更容易找到竞争条件 对于.NET是否存在类似的内容 更新:我看过《国际象棋》,但我们需要一些对Visual Studio 2012的支持(尽管我们还没有使用.NET 4.5)。这里有一个有趣的例子,可以为您的查询提供一些帮助 国际象棋是由微软研究院(Microsoft Research)发明的一种新型组合 模型检查和动态分析(参见 转到www.microsoft.com/fwlink/?LinkId=116523)。它检测并发错误 通过系统地研究线程调度和交错。它是 能够发现竞争条件、死锁、挂起、活锁和 数据损坏问题。为了帮助调试,它还提供了 完全可重复执行。与大多数模型检查一样,系统 探索提供了全面的报道。作为一种动态分析工具, CHESS在一个专门的调度器上反复运行一个常规的单元测试。 每次重复时,它都会选择不同的调度顺序。作为一个 模型检查器,它控制能够 创建特定线程交错的方法。控制状态空间 爆炸,国际象棋应用偏序减少和一个新的迭代 上下文边界有没有针对.NET的测试工具可以更容易地发现线程问题?,.net,multithreading,debugging,testing,concurrency,.net,Multithreading,Debugging,Testing,Concurrency,我想到的是,当我运行(单元、组件、集成或系统)测试时,它会向每个线程注入随机休眠,以便更容易找到竞争条件 对于.NET是否存在类似的内容 更新:我看过《国际象棋》,但我们需要一些对Visual Studio 2012的支持(尽管我们还没有使用.NET 4.5)。这里有一个有趣的例子,可以为您的查询提供一些帮助 国际象棋是由微软研究院(Microsoft Research)发明的一种新型组合 模型检查和动态分析(参见 转到www.microsoft.com/fwlink/?LinkId=11652
Microsoft Research有一个名为: 国际象棋是一种在并发程序中查找和复制海森堡的工具。CHESS反复运行并发测试,确保每次运行采用不同的交错。如果交织导致错误,国际象棋可以复制交织以改进调试。国际象棋可用于托管程序和本机程序 注意,通常我认为这些工具被称为“模糊化工具”(用于“模糊测试”) 无论如何,您使用的是.NET框架并不重要。任何在进程中模糊线程的工具都应该这样做 这允许您查看其他工具,这些工具不是专门为CLR环境定制的。提及,尽管它似乎未发布 你也可能对这一点感兴趣