我如何使用 perf 来分析我的代码?

Posted

技术标签:

【中文标题】我如何使用 perf 来分析我的代码?【英文标题】:how can i use perf to profile my code? 【发布时间】:2014-08-05 00:56:01 【问题描述】:

我正在尝试使用“perf”来查看我在 Linux 上的 C++ 程序中所有 CPU 的使用情况。我想附加到正在运行的进程并获取符号或行号列表,然后我可以查看以进行优化。

【问题讨论】:

在一个终端运行你的代码,在另一个终端运行perf top,你会得到不同的。 【参考方案1】:

附加到进程并查看热点的实时更新:

perf top -p $(pidof yourapp)

要附加到一个进程,然后对其进行分析以供以后评估,请执行以下操作:

perf record -p $(pidof yourapp)

后来:

perf report

对于基于 dwarf 的调用图,您可以添加 --call-graph dwarf

请注意,您应该使用 -O2 -g 之类的内容编译您的应用程序以获取优化和调试符号,否则您将不知道函数名称、文件、行号等。pp。

【讨论】:

以上是关于我如何使用 perf 来分析我的代码?的主要内容,如果未能解决你的问题,请参考以下文章

如何分析 perf sched 脚本和 perf sched 延迟?

使用 perf_events/oprofile 在 Linux 上分析 JIT 的输出?

如何使用 perf 收集一些可读的堆栈跟踪?

如何使用 linux perf 工具进行代码理解

sh 如何使用linux perf工具分析应用程序

如何使用perf捕获组合的内核和用户空间堆栈