分析程序集的代码流

时间:2011-12-20 18:53:10

标签: .net algorithm code-analysis

我必须调查某个涉及多个(此时未知)步骤的过程。 考虑到时间跨度(可能是内存使用情况),我需要一些有效的方法来分析通用子进程(驻留在各种程序集中)的内容。

仅使用智能设置断点运行代码意味着花费太多时间来找到放置它们的“智能”位置。稍后我还将重新创建数百个方法调用和辅助类中的一般逻辑步骤的一般顺序。

生成序列图可能会有所帮助,但它可能会从地球到火星再次发生。)

所以,你可能知道一些工具可以通过一些合理的抽象层次来帮助理解那个过程的逻辑。

(我试过VS的内置分析器 - 它很好,但需要花费很多时间来分析结果,实际上显示热点,并且不会“恢复”实际逻辑。)

2 个答案:

答案 0 :(得分:3)

NDepend可能对您有所帮助,因为您正在执行代码分析。

由于您提到要从运行代码中生成序列图...来自Sparx系统的Enterprise architect可以做到这一点。查看manual

This链接也可能对您有用。

如果您有一些钱可以使用RedGate Develper Bundle for .NET它有性能分析器,内存分析器等。它还有一个评估版本。

还有其他更便宜的alternatives用于分析器。

答案 1 :(得分:0)

有比Visual Studio Profiler更高级的探查器应用程序,但除非您的逻辑使用单独的AppDomain或者易于分组,否则总是需要花费大量时间来研究这些问题。

Visual Studio Ultimate能够从代码中生成依赖矩阵和序列图。 VisualNDepend也可以这样做。但是,虽然这些将为您提供代码静态行为的见解,但它无法帮助您弄清楚它的运行时行为。

代码分析(在Visual Studio Premium和Ultimate中)有一组基于新DataFlow分析引擎的规则。可以为这些编写自定义规则,但至少可以说是最简单的事情。

您可以将IntelliTrace与Profiler数据的结果结合起来以精确定位