我正在寻找具有分析功能的 C/C++ 库,例如gprof
、 或callgrind
.
更准确地说,我希望它的输出与callgrind
发布的内容相同,以便将其传递给第三方工具,例如 KCacheGrind。
我们的想法是能够基于这个库设计一个方面,并将其插入我们团队正在开发的几个应用程序中。
gperftools的CPU 分析器可以使用任一或典型的动态链接附加到任意可执行文件。它可以以 callgrind 兼容的格式输出数据。LD_PRELOAD
假设您想要分析一个可执行文件a.out
。首先将其与-lprofiler
. 然后用CPUPROFILE
env 运行它。指向将存储分析数据的文件名的变量。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