将 perf 与 GCC 的“-p”选项一起使用

Using perf with GCC's "-p" option

提问人:Laney 提问时间:11/7/2023 最后编辑:Peter CordesLaney 更新时间:11/8/2023 访问量:42

问:

我正在尝试使用一些小型 C 程序进行分析,如下所示:perf

$ perf record -F 10000 -g -- ./program

在那之后,我正在构建火焰图:

$ perf script | stackcollapse-perf | flamegraph > flamegraph.svg

我尝试在有和没有编译器选项的情况下编译这个程序(我在 Linux x86_64 上使用 GCC,FWIW)。-p

问题在于前一种情况(例如,与)的火焰图与后一种情况有很大不同。它看起来也更详细。所以我的问题是,期权在这里是否真的有益?这是必要的,但也可以利用它吗?还是 GCC 插入的这个与 -相关的代码只是扭曲了分析数据,使其有些不正确?gcc -p ...-pprofperfmcount

C Linux GCC 性能

评论


答:

2赞 tink 11/7/2023 #1

-p生成 的输出,而不是 。不同的工具。不,我不指望对.profperf-pperf

1赞 Laney 11/8/2023 #2

好吧,所以我自己想通了。原来在构建脚本中有一个编译器选项。 显然关闭了它。-fomit-frame-pointer-p

因此,我没有指定,而是替换了一个非常详细的火焰图,并且由于 .-p-fomit-frame-pointerfno-omit-frame-pointer-p