c ++:生成函数调用树

时间:2009-11-13 06:21:12

标签: c++ gcc doxygen slickedit

我想解析项目中的当前c ++文件并列出其中的所有方法/函数,然后生成函数调用和调用者树。 F.G.你可以参考doxygen如何生成调用树。

我已经检查过gccxml但它没有列出从另一个函数调用的函数。

请建议我使用一些轻量级工具(开源)。

谢谢!

5 个答案:

答案 0 :(得分:6)

静态调用树不一定是运行时调用树。回调和虚拟功能使水变得混乱。所以静态分析只能给你一部分答案。

我能够获得可靠调用树的唯一方法是在已编译的可执行文件上运行gprof。可以将输出按摩到非常准确的调用树中。

答案 1 :(得分:4)

目前,gccxml基本上忽略了函数体(包括对其他函数的调用)。目前可用的C ++解析选项的一个很好的概述是here - 不一定是好消息的承载者,但推荐阅读。

答案 2 :(得分:2)

你提到Doxygen。为什么不使用它?

答案 3 :(得分:0)

我可能误解了,但是视觉工作室有类似的东西。 右键单击一个功能,然后选择“呼叫浏览器”。

答案 4 :(得分:0)

不可能为依赖于异步事件接收的应用程序提供完整的调用树分析。这是我们测试的方式。即使在最简单的情况下,应用程序是完全确定的,这可能是一个相对艰巨的任务,我认为提供边际价值。那你将如何分析结果呢?到了什么效果?