等效于 gprof/callgrind 的性能分析库

Profiling library equivalent to gprof/callgrind

本文关键字:性能 callgrind gprof      更新时间:2023-10-16

我正在寻找具有分析功能的 C/C++ 库,例如 gprofcallgrind

更准确地说,我希望它的输出等同于callgrind发出的输出,以便将其传递给第三方工具,如 KCacheGrind。

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

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

假设您要分析可执行a.out。首先将其与 -lprofiler .之后用CPUPROFILE环境运行它。变量指向将存储分析数据的文件名。调用研磨格式的数据可以使用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