6

创建调用堆栈图

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

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

通过代码?插件?手动?

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

4

6 回答 6

4

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

调用图

为此,您只需将CQLinq 代码查询的结果导出到图形:

代码查询导出

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

选择直接或间接使用我的方法

于 2009-04-03T09:52:46.953 回答
1

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

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

于 2009-04-02T13:10:38.943 回答
1

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

于 2009-04-02T13:15:20.523 回答
0

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


这是一篇可能为您指明正确方向的 CodeProject 文章:

此处提供的下载是 Visual Studio 2008 C# 项目,该项目是一个简单的实用程序,用于在 C# 代码中列出用户函数调用树。

这个调用树列表器似乎适用于我的编码风格,但对于其他一些编码风格可能不可靠。在这里提供它有两个想法:首先,一些程序员可能会发现它是有用的;其次,如果有人在 C# 解析方面与时俱进,将通过合并一个准确的 C# 解析器来升级它,并提供一个改进的实用程序,无论编码风格如何,它都是可靠的,我将不胜感激

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

于 2009-04-02T13:09:55.450 回答
0

你的意思是这样的:http ://erik.doernenburg.com/2008/09/call-graph-visualisation-with-aspectj-and-dot/

于 2009-04-02T13:18:31.777 回答
0

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

于 2009-04-02T13:21:46.637 回答