perf-report显示CPU寄存器的值

我遵循这个文件,并使用perf record--intr-regs=ax,bx,r15 ,试图logging更多的CPU注册信息与PEBSlogging。

但是,如何从perf.data中查看这些信息? 原始命令是perf report ,它只显示开销,命令,共享对象和符号等几个字段。

有没有办法显示CPU regs的价值?

Solutions Collecting From Web of "perf-report显示CPU寄存器的值"

使用iregs字段尝试执行perf script数据转储命令: perf script -F ip,sym,iregs 。 所有字段-F都记录在tools / perf / builtin-script.c的源代码中- struct output_option .. all_output_options ,并且iregs仍然在这里(也是OPT_CALLBACK('F', "fields" ...在同一个文件中)。还有perf-script.txt文档 – https://github.com/torvalds/linux/blob/master/tools/perf/Documentation/perf-script.txt#L115

 -F:: --fields:: Comma separated list of fields to print. Options are: comm, tid, pid, time, cpu, event, trace, ip, sym, dso, addr, symoff, srcline, period, iregs, brstack, brstacksym, flags, bpf-output, brstackinsn, callindent, insn, insnlen. Field list can be prepended with the type, trace, sw or hw, to indicate to which event type the field list applies. 

有提交进入linux kernel git的提到标志--intr-regs 。 从选项实施开始:

https://github.com/torvalds/linux/search?utf8=%E2%9C%93&q=intr-regs&type=

tools/perf/builtin-record.c OPT_CALLBACK_OPTARG('I',“intr-regs”,&record.opts.sample_intr_regs,NULL,“任何寄存器”,

然后在提交中搜索'sample_intr_regs': https : //github.com/torvalds/linux/search? q = sample_intr_regs&type = Commits

几个提交是关于内核部分和perf_attr调试打印。 但是这有一个intr-regs印刷的例子(2015年9月1日) https://github.com/torvalds/linux/commit/532026612455a4a6fd27c1b2e7111263f63218a2

从Arnaldo Carvalho de Melo拉取perf / core的改进和修复: – 增加指定选择要记录的寄存器的能力,减小perf.data文件的大小,并允许在'perf脚本'中打印寄存器:(Stephane Eranian )

  # perf record --intr-regs=AX,SP usleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.016 MB perf.data (8 samples) ] # perf script -F ip,sym,iregs | tail -5 ffffffff8105f42a native_write_msr_safe AX:0xf SP:0xffff8802629c3c00 ffffffff8105f42a native_write_msr_safe AX:0xf SP:0xffff8802629c3c00 ffffffff81761ac0 _raw_spin_lock AX:0xffff8801bfcf8020 SP:0xffff8802629c3ce8 ffffffff81202bf8 __vma_adjust_trans_huge AX:0x7ffc75200000 SP:0xffff8802629c3b30 ffffffff8122b089 dput AX:0x101 SP:0xffff8802629c3c78 # 

我找到了一个方法来实现它通过使用perf report -D ,然后找到记录所需的记录名称(但这似乎是非常低效的..)。

或者其他人可以提供更简化的方法?