【发布时间】:2013-04-17 21:21:44
【问题描述】:
我想知道是否有 VS 工具可以显示给定 C++ 函数的调用图(即列出所有可能执行路径的图)。在仅在少数地方调用函数的情况下,它有助于导航大型代码库。
对于像printf 这样经常调用的函数,它可以简单地说:
选项太多...
再次,我想制作这样的工具并不容易,所以我想知道它是否存在,但你知道它似乎可以做到,所以你永远不知道...... :)
编辑:我知道查找所有引用,但这只是给出函数的调用点,而不是调用函数的函数的调用点...
编辑:VS 是 2010,但如有必要,可以选择 VS2012。
【问题讨论】:
-
如果你想要的只是静态分析,我认为这并不牵强。否则,任何形式的动态调度,都是白日梦..
-
调试器会给你堆栈树。另外,看看Windows下的
StackWalk64(),你可以用它从你的程序中获取堆栈树。 -
@PetrBudnik,这不是他的问题。他的问题更倾向于提前知道什么调用堆栈会到达特定函数。
-
@PetrBudnik 从理论上讲,如果您可以分析代码并知道哪些函数调用了其他函数 - 然后您可以从特定函数追溯您的步骤并创建堆栈跟踪(不是真实的,更多一棵树的),它将显示任何功能可能到达的每一种可能的方式。
-
@Moo-Juice 我想,我对术语感到困惑。我想,你说的是call graph,而不是call stack。以codeviz 为例。
标签: c++ visual-studio