Geo*_*dze 10 .net c# multithreading task-parallel-library
我采取的C#.NET并行数据结构(如ConcurrentDictionary
,BlockcingCollection
等).这不仅仅是在从不同线程访问时忘记锁定对象.它需要复杂的锁定策略来最大化并行执行时间.
我知道有一个工具,一种用于.NET的系统并发测试的框架,名为CHESS.
问题:是否还有一种工具可以通过静态代码分析找到并发/线程问题?类似CheckThread的东西,适用于java.
Col*_*ith 11
这里有一组资源可以帮助进行并发编程......它们是静态和基于运行时的工具的混合体.
英特尔在Parallel Studio中做了一些有助于并发开发的工具,但他们的Parallel Advisor仅适用于C/C++.
但对于C#,您可以使用Inspector XE(以前的Intel Thread Checker)进行运行时线程检查
这里有一个名为PRESharp的东西:
现在我还没有听说过......只有类似的声音PREFast,我过去用它来静态分析一些C驱动程序代码.我怀疑它是一个内部微软工具,除非你获得特殊访问权限,否则没有其他人可以使用.
这里列出了很多静态分析工具(例如FXCop).
和Typemock Racer在这里提到:
并且值得注意的是Coverity Prevent声称通过静态分析C/C++,Java或C#代码(由NASA评级)来检测并发缺陷.
http://www.verifysoft.com/en_coverity_prevent_concurrency.html
http://www.theregister.co.uk/2012/08/22/mars_rover_software_coverity/)
其他帮助进行并发编程的工具是WinDBG(Windows调试工具的一部分,它分布在Windows SDK中),它比Visual Studio调试器更强大.
注意:如果在系统中安装Windows Driver Kit 8,您现在可以在Visual Studio 2012中使用功能更强大的用户模式调试器,该调试器与WinDBG具有相同的性能.
您还可以获得扩展它的WinDBG插件,例如SOSEX插件添加了!dlk
有助于确定死锁原因的命令.
http://blog.scriptico.com/04/debugging-with-windbg-deadlocks-in-applications/
http://blogs.msdn.com/b/tess/archive/2008/02/11/hang-caused-by-gc-xml-deadlock.aspx
Visual Studio中有Concurrency Visualizer和SDK.
这是一系列精彩的视频,为您提供有关调试.NET应用程序的一般建议:
归档时间: |
|
查看次数: |
2719 次 |
最近记录: |