创建调用堆栈图
我们最近刚刚被投入到一个需要我们进入代码的大项目中(duh)。
我们正在使用不同的方法来熟悉它,断点等。但是我们发现一种方法是创建应用程序的调用树,最简单/最快的方法是什么?
通过代码?插件?手动?
该项目是一个 C# Windows 应用程序。
使用静态分析器NDepend,您可以获得静态方法调用图,如下图所示。免责声明:我是该工具的开发人员之一
为此,您只需将CQLinq 代码查询的结果导出到图形:
这样的代码查询实际上可以为任何方法生成,这要归功于下图所示的右键菜单。
每当我开始一份新工作(这通常是因为我是一名承包商)时,我都会花两到三天时间阅读存储库中的每个源文件,并将每个类的注释记录在一个简单的文本文件中。这很费力,但这意味着您可以很好地了解项目如何组合在一起,并且当您需要找到执行某些操作的类时,您将拥有一张可靠的地图。
虽然我在开始一个项目时喜欢 UML/图表,但就个人而言,在检查现有代码时,它们根本没有用。
不是您问题的直接答案,但NDepend是一个很好的工具,可以让您深入了解 100 英尺的代码库视图,它使您能够深入了解类之间的关系(以及许多其他功能)
编辑:我相信微软的CLR Profiler能够显示正在运行的应用程序的调用树。如果这还不够,我会留下我在下面发布的链接,以防您想开始使用自定义解决方案。
这是一篇可能为您指明正确方向的 CodeProject 文章:
此处提供的下载是 Visual Studio 2008 C# 项目,该项目是一个简单的实用程序,用于在 C# 代码中列出用户函数调用树。
这个调用树列表器似乎适用于我的编码风格,但对于其他一些编码风格可能不可靠。在这里提供它有两个想法:首先,一些程序员可能会发现它是有用的;其次,如果有人在 C# 解析方面与时俱进,将通过合并一个准确的 C# 解析器来升级它,并提供一个改进的实用程序,无论编码风格如何,它都是可靠的,我将不胜感激
源代码可供下载 - 也许您可以将其用作自定义解决方案的起点。
不是一个卡住的记录,但如果我让它运行并暂停几次,并且每次都捕获调用堆栈,这让我对占最多时间的调用结构有一个真实的了解。但是,它并没有为我提供快速发生的事情的调用结构。