Messages in this thread Patch in this message | | | Date | Wed, 19 Sep 2018 15:12:47 -0300 | From | Arnaldo Carvalho de Melo <> | Subject | Re: [PATCH v1 03/10] tools, perf, script: Add --insn-trace for instruction decoding |
| |
Em Wed, Aug 29, 2018 at 10:18:27AM -0700, Andi Kleen escreveu: > From: Andi Kleen <ak@linux.intel.com> > > Add a --insn-trace short hand option for decoding and disassembling > instruction streams for intel_pt. This automatically pipes the > output into the xed disassembler to generate disassembled instructions. > This just makes this use model much nicer to use
Would be nice to provide at least an URL to where to find xed, I tried this:
[root@seventh ~]# dnf search xed Last metadata expiration check: 0:25:39 ago on Wed 19 Sep 2018 02:42:36 PM -03. =================================================================================== Name Exactly Matched: xed ==================================================================================== xed.i686 : X-Apps [Text] Editor (Cross-DE, backward-compatible, GTK3, traditional UI) xed.x86_64 : X-Apps [Text] Editor (Cross-DE, backward-compatible, GTK3, traditional UI)
https://github.com/intelxed
So I have to install a build system and then install it to then build intelxed?
- Arnaldo > Before > > % perf record -e intel_pt// ... > % perf script --itrace=i0ns --ns -F +insn,-event,-period | xed -F insn: -A -64 > swapper 0 [000] 117276.429606186: ffffffff81010486 pt_config ([kernel.kallsyms]) nopl %eax, (%rax,%rax,1) > swapper 0 [000] 117276.429606186: ffffffff8101048b pt_config ([kernel.kallsyms]) add $0x10, %rsp > swapper 0 [000] 117276.429606186: ffffffff8101048f pt_config ([kernel.kallsyms]) popq %rbx > swapper 0 [000] 117276.429606186: ffffffff81010490 pt_config ([kernel.kallsyms]) popq %rbp > swapper 0 [000] 117276.429606186: ffffffff81010491 pt_config ([kernel.kallsyms]) popq %r12 > swapper 0 [000] 117276.429606186: ffffffff81010493 pt_config ([kernel.kallsyms]) popq %r13 > swapper 0 [000] 117276.429606186: ffffffff81010495 pt_config ([kernel.kallsyms]) popq %r14 > swapper 0 [000] 117276.429606186: ffffffff81010497 pt_config ([kernel.kallsyms]) popq %r15 > swapper 0 [000] 117276.429606186: ffffffff81010499 pt_config ([kernel.kallsyms]) retq > swapper 0 [000] 117276.429606186: ffffffff8101063e pt_event_add ([kernel.kallsyms]) cmpl $0x1, 0x1b0(%rbx) > swapper 0 [000] 117276.429606186: ffffffff81010645 pt_event_add ([kernel.kallsyms]) mov $0xffffffea, %eax > swapper 0 [000] 117276.429606186: ffffffff8101064a pt_event_add ([kernel.kallsyms]) mov $0x0, %edx > swapper 0 [000] 117276.429606186: ffffffff8101064f pt_event_add ([kernel.kallsyms]) popq %rbx > swapper 0 [000] 117276.429606186: ffffffff81010650 pt_event_add ([kernel.kallsyms]) cmovnz %edx, %eax > swapper 0 [000] 117276.429606186: ffffffff81010653 pt_event_add ([kernel.kallsyms]) jmp 0xffffffff81010635 > swapper 0 [000] 117276.429606186: ffffffff81010635 pt_event_add ([kernel.kallsyms]) retq > swapper 0 [000] 117276.429606186: ffffffff8115e687 event_sched_in.isra.107 ([kernel.kallsyms]) test %eax, %eax > > Now > > % perf record -e intel_pt// ... > % perf script --insn-trace > ... same output ... > > Signed-off-by: Andi Kleen <ak@linux.intel.com> > --- > tools/perf/Documentation/perf-script.txt | 4 ++++ > tools/perf/builtin-script.c | 14 ++++++++++++++ > 2 files changed, 18 insertions(+) > > diff --git a/tools/perf/Documentation/perf-script.txt b/tools/perf/Documentation/perf-script.txt > index afdafe2110a1..04a57e0fb3a6 100644 > --- a/tools/perf/Documentation/perf-script.txt > +++ b/tools/perf/Documentation/perf-script.txt > @@ -383,6 +383,10 @@ include::itrace.txt[] > will be printed. Each entry has function name and file/line. Enabled by > default, disable with --no-inline. > > +--insn-trace:: > + Show instruction stream for intel_pt traces. Requires installing the > + xed disassembler. > + > SEE ALSO > -------- > linkperf:perf-record[1], linkperf:perf-script-perl[1], > diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c > index 910e0f1f2876..66daa7df68c5 100644 > --- a/tools/perf/builtin-script.c > +++ b/tools/perf/builtin-script.c > @@ -44,6 +44,7 @@ > #include <sys/stat.h> > #include <fcntl.h> > #include <unistd.h> > +#include <subcmd/pager.h> > > #include "sane_ctype.h" > > @@ -3072,6 +3073,17 @@ static int perf_script__process_auxtrace_info(struct perf_tool *tool, > #define perf_script__process_auxtrace_info 0 > #endif > > +static int parse_insn_trace(const struct option *opt __maybe_unused, > + const char *str __maybe_unused, > + int unset __maybe_unused) > +{ > + parse_output_fields(NULL, "+insn,-event,-period", 0); > + itrace_parse_synth_opts(opt, "i0ns", 0); > + nanosecs = true; > + force_pager("xed -F insn: -A -64 | less"); > + return 0; > +} > + > int cmd_script(int argc, const char **argv) > { > bool show_full_info = false; > @@ -3156,6 +3168,8 @@ int cmd_script(int argc, const char **argv) > "system-wide collection from all CPUs"), > OPT_STRING('S', "symbols", &symbol_conf.sym_list_str, "symbol[,symbol...]", > "only consider these symbols"), > + OPT_CALLBACK_OPTARG(0, "insn-trace", &itrace_synth_opts, NULL, NULL, > + "Decode instructions from itrace", parse_insn_trace), > OPT_STRING(0, "stop-bt", &symbol_conf.bt_stop_list_str, "symbol[,symbol...]", > "Stop display of callgraph at these symbols"), > OPT_STRING('C', "cpu", &cpu_list, "cpu", "list of cpus to profile"), > -- > 2.17.1
| |