NoS*_*tAl 23 c++ visual-studio
我想知道是否有一个VS工具可以显示给定C++函数的调用图(即列出所有可能的执行路径的图表).在仅在少数几个地方调用函数的情况下,它将有助于导航大代码库.
对于经常被称为函数,printf它可以简单地说:
选择太多......
再一次,我想制作这样的工具真的不容易,所以我想知道它是否存在,但你知道它似乎可以这样做,所以你永远不会知道...... :)
编辑:我知道找到所有引用,但这只提供函数的调用站点,而不是调用函数调用函数的函数的调用站点...
编辑:VS是2010年,但如果有必要,VS2012是一个选项.
Chi*_*ils 17
你提到你知道找到所有参考文献.你看过Call Hierarchy吗?它可能不是你的"梦想方法",但它允许你根据给定函数的"调用"和"调用"来查看函数.该窗口还允许您添加多个功能以树格式查看.所以基本上你会在可能的结果中上下.
右键单击所需的方法(可以是层次结构中的任何位置)=>
选择"查看呼叫层次结构"
请注意,如果您可以向窗口添加多个参考点.需要时删除
您也可以使用Ctrl + K或Ctrl + T.
Sig*_*erm 12
据我所知,C++/MSVC中没有这样的功能.
但是,有一个Windows的AQTime分析器具有"静态分析"选项(如果我没记错的话)扫描已编译的可执行文件,生成调用图并显示不可缓存的函数.
如果我没记错的话,AQtime会集成到visual studio(专业版,afaik)中.
不幸的是,这是一款售价约500美元的商业分析器,试用版中没有此功能.上次我使用静态分析是在3.4年前,我现在还不完全记得细节(而且我再也无法访问AQTime了).无论如何,它是一个专门的工具,所以我不建议购买它,除非你优化代码速度24/7.
也许,通过谷歌搜索"静态分析","代码覆盖"或研究其他分析器,你会发现一些类似的工具,免费工作.
除此之外,doxygen可以为C++代码生成调用图.在doxygen的情况下,你将不得不寻找从未被称为自己的函数.
此外,Visual Studio 2008具有内置的调用者图形功能(我认为,它使用intellisense).基本上,你右键单击任何功能并选择"显示呼叫者"(或类似的东西),这将打开窗口中所有功能的列表(visual studio THINKS正在调用你的功能).由于VS2008中存在此功能,因此应将其包含在VS2010中.但是,由于显而易见的原因(虚拟方法,回调等),它无法检测每个调用方.
也许doxygen是你正在寻找的工具.它提供了生成调用图(显示特定函数调用的所有函数)和/或调用者图(显示函数直接或间接调用的函数)的可能性.
见:http://www.doxygen.nl/manual/diagrams.html