在运行时生成c / c ++程序的动态调用图

时间:2011-08-16 11:39:25

标签: c++ c call-graph

如果要想象一个程序的运行,我想一个人可以从获取程序的调用图开始。

但是如何在运行时获得c / c ++程序的调用图?

编辑:澄清,我目前正在使用g ++在linux上运行,但我想如果我使用不同的平台,我也对解决方案感到好奇。

3 个答案:

答案 0 :(得分:5)

我使用etrace来跟踪程序的执行情况。

Egypt做同样的事情,但只对C ++提供有限的支持。

两者都要求程序使用gcc进行检测。

答案 1 :(得分:4)

您可以使用 KCachegrind 根据 Valgrind's callgrind工具生成的数据生成和分析调用图。

答案 2 :(得分:1)

来自SofwareVerify的 Bug Validator (免费的公开测试版)可以做到这一点。

摘自主页:

  

C ++ Bug Validator在应用程序运行时提供自动执行历史记录。 无需重新编译或重新链接您的应用程序。 C ++ Bug Validator与调试信息和/或MAP文件一起使用。 C ++ Bug Validator允许您在整个应用程序或仅需要的DLL上执行执行历史记录。

(来自我的标记)。

我不知道他们是如何这样做的,但很明显,这是可能的。