如何制作“调用堆栈图”

时间:2009-04-02 13:07:01

标签: c# .net diagram

创建调用堆栈图

我们刚刚进入了一个需要我们进入代码的大项目(duh)。

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

按代码?插件?手动?

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

6 个答案:

答案 0 :(得分:3)

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

Call graph

为此,您只需要将结果导出到CQLinq code query

code query exporting

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

Select methods that use me directly or indirectly

答案 1 :(得分:1)

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

Altought我在开始一个项目时喜欢UML /图表我个人在检查现有代码时并没有发现它们。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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


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

  

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

     

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

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

答案 4 :(得分:0)

答案 5 :(得分:0)

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