【问题标题】:Analyzing code flow across assemblies跨程序集分析代码流
【发布时间】:2012-01-12 23:14:02
【问题描述】:

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

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

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

那么,您是否知道一些工具可以帮助您以某种合理的抽象级别理解该过程的逻辑。

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

【问题讨论】:

    标签: .net algorithm code-analysis


    【解决方案1】:

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

    既然您提到您想从正在运行的代码生成序列图...来自 Sparx 系统的Enterprise architect 可以做到这一点。查看manual

    This 链接可能对您也有用。

    如果你有钱可以使用RedGate Develper Bundle for .NET 它有性能分析器、内存分析器等。它也有一个评估版。

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

    【讨论】:

    • 一个非常有趣的工具列表。非常感谢。
    • @Nickolodeon - 总是乐于提供帮助 ;)
    【解决方案2】:

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

    Visual Studio Ultimate 能够从您的代码生成依赖矩阵和序列图。 VisualNDepend 也可以做到这一点。但是,虽然这些可以让您深入了解代码的静态行为,但并不能帮助您弄清楚代码的运行时行为。

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

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

    【讨论】:

    • ... 结果是什么?
    猜你喜欢
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 2011-02-05
    • 2011-08-05
    相关资源
    最近更新 更多