C++ 之 perf+火焰图分析与调试

简介

在遇到一些内存异常的时候,经常这部分的代码是很难去进行分析的,最近了解到Perf这个神器,这里也展开介绍一下如何使用Perf以及如何去画火焰图。

1. Perf 基础

1.1 Perf 简介

perf是Linux下的一款性能分析工具,能够进行函数级与指令级的热点查找。利用perf剖析程序性能时,需要指定当前测试的性能时间。性能事件是指在处理器或操作系统中发生的,可能影响到程序性能的硬件事件或软件事件

1.2 Perf的安装

ubuntu 18.04:

sudo apt install linux-tools-common linux-tools-4.15.0-106-generic linux-cloud-tools-4.15.0-106-generic

1.3 perf命令简要介绍

perf list

perf list 主要是用于列出有哪些可用的event,可以供 perf top -e eventname 来分析。perf list [hw|sw|cache|tracepoint|pmu|event_glob],其中perf list hw 可以列出 hard ware 的event, sw 是software的event, 其它类似。

hw/hardware显示支持的硬件事件相关,如: perf list hardwaresw/software显示支持的软件事件列表: perf list swcache/hwcache显示硬件cache相关事件列表: perf list cachepmu显示支持的PMU事件列表: perf list pmutracepoint显示支持的所有tracepoint列表,这个列表就比较庞大: perf list tracepoint

$ perf list hw
$ perf list sw
  cpu-clock                                          [Software event]
  task-clock                                         [Software event]
  page-faults OR faults                              [Software event]
  context-switches OR cs                             [Software event]
  cpu-migrations OR migrations                       [Software event]
  minor-faults                                       [Software event]
  major-faults                                       [Software event]
  alignment-faults                                   [Software event]
  emulation-faults                                   [Software event]
  dummy                                              [Software event]
$ perf list pmu
$ perf list event_glob
perf top

perf top的作用是实时显示系统/进程的性能统计信息,上面的 perf list [hw|sw...] 可以知道所有的 tracepoint events, 接下来我们就可以使用 perf top -e tracepoint-event 来专门获得指定的tracepoint的信息。其中常用的常用参数有

-e:指定性能事件-a:显示在所有CPU上的性能统计信息-C:显示在指定CPU上的性能统计信息-p:指定进程PID-t:指定线程TID-K:隐藏内核统计信息-U:隐藏用户空间的统计信息-s:指定待解析的符号信息‘‐G’ or‘‐‐call‐graph’ <output_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芯动大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值