diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2021-04-14 09:32:14 -0300 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2021-04-15 16:34:05 -0300 |
commit | 3535a6967c0d590381c16d6676c6fdfa60f4d733 (patch) | |
tree | cab4cffd407d568b4646950745f2fb444aeb2df4 | |
parent | 9865ea8ab31f2e56be59125099ee251ce573f293 (diff) |
perf record: Improve 'Workload failed' message printing events + what was exec'ed
Before:
# perf record -a cycles,instructions,cache-misses
Workload failed: No such file or directory
#
After:
# perf record -a cycles,instructions,cache-misses
Failed to collect 'cycles' for the 'cycles,instructions,cache-misses' workload: No such file or directory
#
Helps disambiguating other error scenarios:
# perf record -a -e cycles,instructions,cache-misses bla
Failed to collect 'cycles,instructions,cache-misses' for the 'bla' workload: No such file or directory
# perf record -a cycles,instructions,cache-misses sleep 1
Failed to collect 'cycles' for the 'cycles,instructions,cache-misses' workload: No such file or directory
#
When all goes well we're back to the usual:
# perf record -a -e cycles,instructions,cache-misses sleep 1
[ perf record: Woken up 3 times to write data ]
[ perf record: Captured and wrote 3.151 MB perf.data (21242 samples) ]
#
Acked-by: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lore.kernel.org/lkml/20210414131628.2064862-3-acme@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r-- | tools/perf/builtin-record.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 35465d1db6dd..5fb9665a2ec2 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -1977,9 +1977,13 @@ static int __cmd_record(struct record *rec, int argc, const char **argv) record__auxtrace_snapshot_exit(rec); if (forks && workload_exec_errno) { - char msg[STRERR_BUFSIZE]; + char msg[STRERR_BUFSIZE], strevsels[2048]; const char *emsg = str_error_r(workload_exec_errno, msg, sizeof(msg)); - pr_err("Workload failed: %s\n", emsg); + + evlist__scnprintf_evsels(rec->evlist, sizeof(strevsels), strevsels); + + pr_err("Failed to collect '%s' for the '%s' workload: %s\n", + strevsels, argv[0], emsg); err = -1; goto out_child; } |