我想知道是否有VS工具可以显示给定C++函数的调用图(即列出所有可能的执行路径的图表)。如果只在几个地方调用函数,这将有助于导航大型代码库。
对于像printf
这样被称为oft的函数,它可以简单地说:
选择太多了..。
同样,我想制造这样的工具并不容易,所以我想知道它是否存在,但你知道,似乎可以这样做,所以你永远不知道.:)
编辑:我知道查找所有引用,但这只是函数的调用站点,而不是调用调用函数的函数的调用站点。
编辑: VS是2010年,但如果必要的话,VS2012是一个选项。
发布于 2013-06-27 01:52:16
你说过你知道如何找到所有的推荐信。你看过Call Hierarchy
了吗?它可能不是您的“梦想方法”,但它确实允许您根据给定函数的“调用”和“调用”来查看函数。该窗口还允许您以树格式添加多个要查看的函数。因此,基本上,你会在可能的结果中向上或向下树。
右键单击所需的方法(可能在层次结构中的任何位置) => 选择“查看调用层次结构” 注意,如果可以向窗口添加多个引用点。必要时删除 您也可以使用Ctrl+K或Ctrl+T。
另一个很好的例子,IMHO,对C++和C#与VS之间的差异感到失望。我想代码映射就是你要找的。当然,假设你是和终极公司合作的--但是不是,不是和C++一起工作。
发布于 2013-06-27 11:16:53
据我所知,C++/MSVC中没有这样的特性。
但是,windows的AQTime分析器具有“静态分析”选项(如果我记得正确的话),可以扫描编译后的可执行文件,生成调用图,并向您展示不可实现的函数。
如果我没记错的话,AQtime集成到了visual (专业版,afaik)中。
不幸的是,这是一个价值500美元左右的商业分析器,而且这个特性在试用版中是不可用的。上一次我使用静态分析是3..4年前,我现在不太记得细节了(而且我再也不能访问AQTime了)。无论如何,它是一个专门的工具,所以我不建议购买它,除非您正在优化代码的速度24/7。
也许,通过搜索“静态分析”、“代码覆盖率”或研究其他分析器,您会发现一些类似的工具可以免费完成这项工作。
除此之外,doxygen还可以为C++代码生成调用图。在doxygen的情况下,您将不得不寻找从未被称为您自己的函数。
另外,Visual 2008有一个内置的调用者图形特性(我认为,它使用intellisense)。基本上,您可以右键单击任何函数并选择“显示调用者”(或类似的内容),这将在窗口中打开所有函数(visual studio认为正在调用您的函数)的列表。因为这个特性存在于VS2008中,所以它应该包含在VS2010中。但是,由于明显的原因(虚拟方法、回调等),它无法检测每个调用者。
发布于 2013-06-27 03:13:37
也许doxygen是你要找的工具。它提供了生成调用图(显示特定函数调用的所有函数)和/或调用方图(显示函数直接或间接调用的函数)的可能性。
https://stackoverflow.com/questions/16190058
复制