lkml.org 
[lkml]   [2015]   [May]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 07/17] perf probe: Show better error message when failed to find variable
    Date
    From: He Kuang <hekuang@huawei.com>

    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>
    ---
    tools/perf/util/probe-finder.c | 10 ++++++----
    1 file changed, 6 insertions(+), 4 deletions(-)

    diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c
    index 5804086425aa..590a24a7f555 100644
    --- a/tools/perf/util/probe-finder.c
    +++ b/tools/perf/util/probe-finder.c
    @@ -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,
    --
    2.1.0


    \
     
     \ /
      Last update: 2015-05-15 00:41    [W:2.263 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site