3

我正在寻找具有分析功能的 C/C++ 库,例如gprof、 或callgrind.

更准确地说,我希望它的输出与callgrind发布的内容相同,以便将其传递给第三方工具,例如 KCacheGrind。

我们的想法是能够基于这个库设计一个方面,并将其插入我们团队正在开发的几个应用程序中。

4

1 回答 1

3

gperftoolsCPU 分析器可以使用任一或典型的动态链接附加到任意可执行文件。它可以以 callgrind 兼容的格式输出数据。LD_PRELOAD

假设您想要分析一个可执行文件a.out。首先将其与-lprofiler. 然后用CPUPROFILEenv 运行它。指向将存储分析数据的文件名的变量。callgrind 格式的数据可以使用pprof.

CPUPROFILE=a.out.prof ./a.out
pprof --callgrind a.out a.out.prof

有趣的是,CPUPROFILE未定义的可执行文件表现正常。因此,无需重新编译或重新链接应用程序即可轻松启用此分析器。

如果由于任何原因您无法更改可执行文件的链接方式,您仍然可以通过LD_PRELOAD以下方式定义来分析它。

LD_PRELOAD=/path/to/libprofiler.so CPUPROFILE=a.out.prof ./a.out
于 2012-12-18T15:31:52.487 回答