8

如果要可视化程序的运行,我想应该从获取程序的调用图开始。

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

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

4

3 回答 3

6

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

埃及也做同样的事情,但对 C++ 的支持有限。

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

于 2011-08-16T12:57:38.337 回答
4

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

于 2011-08-16T12:14:22.863 回答
1

来自 SoftwareVerify的Bug Validator(提供免费的公共测试版)可以做到这一点。

摘自主页:

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

(我的标记)。

我不知道他们是怎么做到的,但显然,这是可能的。

于 2011-08-16T12:00:49.567 回答