mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 02:50:43 +00:00
perf probe: Show better error message when failed to find variable
Indicate to check variable location range in error message when we got failed to find the variable. Before this patch: $ perf probe --add 'generic_perform_write+118 bytes' Failed to find the location of bytes at this address. Perhaps, it has been optimized out. Error: Failed to add events. After this patch: $ perf probe --add 'generic_perform_write+118 bytes' Failed to find the location of the 'bytes' variable at this address. Perhaps it has been optimized out. Use -V with the --range option to show 'bytes' location range. Error: Failed to add events. Signed-off-by: He Kuang <hekuang@huawei.com> Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/r/1431336304-16863-3-git-send-email-hekuang@huawei.com [ Improve the error message based on lkml thread ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
349e8d2611
commit
7d5eaba9b3
1 changed files with 6 additions and 4 deletions
|
@ -527,10 +527,12 @@ static int convert_variable(Dwarf_Die *vr_die, struct probe_finder *pf)
|
|||
|
||||
ret = convert_variable_location(vr_die, pf->addr, pf->fb_ops,
|
||||
&pf->sp_die, pf->tvar);
|
||||
if (ret == -ENOENT || ret == -EINVAL)
|
||||
pr_err("Failed to find the location of %s at this address.\n"
|
||||
" Perhaps, it has been optimized out.\n", pf->pvar->var);
|
||||
else if (ret == -ENOTSUP)
|
||||
if (ret == -ENOENT || ret == -EINVAL) {
|
||||
pr_err("Failed to find the location of the '%s' variable at this address.\n"
|
||||
" Perhaps it has been optimized out.\n"
|
||||
" Use -V with the --range option to show '%s' location range.\n",
|
||||
pf->pvar->var, pf->pvar->var);
|
||||
} else if (ret == -ENOTSUP)
|
||||
pr_err("Sorry, we don't support this variable location yet.\n");
|
||||
else if (ret == 0 && pf->pvar->field) {
|
||||
ret = convert_variable_fields(vr_die, pf->pvar->var,
|
||||
|
|
Loading…
Reference in a new issue