【问题标题】:How to make a "Call stack diagram"如何制作“调用堆栈图”
【发布时间】:2012-06-14 15:16:39
【问题描述】:

创建调用堆栈图

我们最近刚刚被投入到一个需要我们进入代码的大项目中(duh)。

我们正在使用不同的方法来熟悉它,断点等。但是我们发现一种方法是制作应用程序的调用树,最简单/最快的方法是什么? ?

通过代码?插件?手动?

该项目是一个 C# Windows 应用程序。

【问题讨论】:

  • 如果您正在搜索,请尝试使用更常见的名称“调用图”。如果你的调用图是一棵树,那么你就没有一个非常有趣的程序,因为每个函数都只有一个调用者。无论哪种方式,您所寻找的永远不会称为“调用堆栈”。

标签: c# .net diagram


【解决方案1】:

使用静态分析器NDepend,您可以获得一个静态方法call graph,如下所示。 免责声明:我是该工具的开发人员之一

为此,您只需将CQLinq code query 的结果导出到图表:

这样的代码查询,实际上可以为任何方法生成,这要归功于下图所示的右键菜单。

【讨论】:

  • 你知道更便宜的选择吗?我刚查了一下,许可证是 400 美元。太棒了。
【解决方案2】:

每当我开始一份新工作(这通常是因为我是一名承包商)时,我都会花两到三天时间阅读存储库中的每个源文件,并将每个类的注释记录在一个简单的文本文件中。这很费力,但这意味着您可以很好地了解项目如何组合在一起,并且当您需要找到执行某些操作的类时,您有一个可靠的地图。

虽然我在开始一个项目时喜欢 UML/图表,但就我个人而言,在检查现有代码时发现它们根本没有用。

【讨论】:

    【解决方案3】:

    不是直接回答您的问题,但NDepend 是一个很好的工具,可以让您深入了解代码库的 100 英尺视图,它使您能够深入了解类之间的关系(以及许多其他功能)

    【讨论】:

      【解决方案4】:

      编辑:我相信微软的CLR Profiler 能够显示正在运行的应用程序的调用树。如果这还不够,我会留下我在下面发布的链接,以防您想开始使用自定义解决方案。


      Here is a CodeProject article 可能会为您指明正确的方向:

      这里提供的下载是一个视觉 一个简单的 Studio 2008 C# 项目 列出用户函数调用的实用程序 C# 代码中的树。

      这个调用树列表器似乎工作正常 对于我的编码风格,但会 对于其他人来说可能不可靠 编码风格。这里提供 有两个想法:首先,一些 程序员可能会发现它很有用; 第二,如果 熟悉 C# 的人 解析将升级它 合并一个准确的 C# 解析器 并产生一个改进的实用程序, 无论编码风格如何,都是可靠的

      源代码可供下载 - 也许您可以将其用作自定义解决方案的起点。

      【讨论】:

        【解决方案5】:
        【解决方案6】:

        不是卡住的记录,但如果我让它运行并暂停几次,并且每次都捕获调用堆栈,这让我对占最多时间的调用结构有一个真实的了解。然而,它并没有为我提供快速发生的事情的调用结构。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-12-25
          • 2011-09-14
          • 2023-03-11
          • 2015-01-25
          • 2016-12-21
          • 1970-01-01
          • 1970-01-01
          • 2010-10-15
          相关资源
          最近更新 更多