Re: [RFC PATCH] perf tui: Annotate entries in callchains

Stephane Eranian
2015-03-20T17:16:00Z

Hi,

On Thu, Mar 19, 2015 at 5:39 PM, Arnaldo Carvalho de Melo
<arnaldo.melo@gmail.com> wrote:
> On Mar 19, 2015 9:34 PM, "Stephane Eranian" <eranian@google.com> wrote:
>>
>> Hi Arnaldo,
>>
>> On Thu, Mar 19, 2015 at 3:58 PM, Arnaldo Carvalho de Melo
>> <acme@kernel.org> wrote:
>> >
>> > Hi Stephane,
>> >
>> > This patch, together with what is in my perf/core branch, should
>> > implement that feature we talked about recently, i.e. to allow
>> > annotating entries in callchains, please take a look at see if you think
>> > it is ok,
>> >
>> I tried on tip.git and a simple example. It does what I wanted.
>> I will try on more complex test cases.
>> Thanks for implementing this quickly.
>
> Thanks for testing, please let us know if you have further suggestions,
>
Ok, it does not work.
I think it works as long as the caller you want to annotate is in the
same module.
But suppose, I am on malloc() (libc) and I want to see a caller of
malloc(), it will
propose 'annotate bar()', but will still show me the code of libc:malloc.

In my earlier test, everything worked because the callee and caller were in the
same module.

Could you fix this?

> - Arnaldo
>
> Sent from smartphone
>
>
>>
>> >
>> > - Arnaldo
>> >
>> >
>> > From: Arnaldo Carvalho de Melo <acme@redhat.com>
>> > Subject: [PATCH 1/1] perf hists browser: Indicate which callchain
>> > entries are annotated
>> >
>> > Now that we can annotate entries in a callchain, show which ones have an
>> > associated symbol and samples, by adding a right arrow just before the
>> > symbol name when in verbose mode.
>> >
>> > To toggle verbose mode press 'V'.
>> >
>> > Cc: Adrian Hunter <adrian.hunter@intel.com>
>> > Cc: Borislav Petkov <bp@suse.de>
>> > Cc: David Ahern <dsahern@gmail.com>
>> > Cc: Don Zickus <dzickus@redhat.com>
>> > Cc: Frederic Weisbecker <fweisbec@gmail.com>
>> > Cc: Jiri Olsa <jolsa@redhat.com>
>> > Cc: Mike Galbraith <efault@gmx.de>
>> > Cc: Namhyung Kim <namhyung@kernel.org>
>> > Cc: Peter Zijlstra <peterz@infradead.org>
>> > Cc: Stephane Eranian <eranian@google.com>
>> > Link:
>> > http://lkml.kernel.org/n/tip-d2rf1p3h5gdp7hdl2gf2bozl@git.kernel.org
>> > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>> > ---
>> > tools/perf/ui/browsers/hists.c | 4 +++-
>> > 1 file changed, 3 insertions(+), 1 deletion(-)
>> >
>> > diff --git a/tools/perf/ui/browsers/hists.c
>> > b/tools/perf/ui/browsers/hists.c
>> > index cd7350aeb8e7..995b7a8596b1 100644
>> > --- a/tools/perf/ui/browsers/hists.c
>> > +++ b/tools/perf/ui/browsers/hists.c
>> > @@ -511,6 +511,7 @@ static void
>> > hist_browser__show_callchain_entry(struct hist_browser *browser,
>> > {
>> > int color, width;
>> > char folded_sign = callchain_list__folded(chain);
>> > + bool show_annotated = browser->show_dso && chain->ms.sym &&
>> > symbol__annotation(chain->ms.sym)->src;
>> >
>> > color = HE_COLORSET_NORMAL;
>> > width = browser->b.width - (offset + 2);
>> > @@ -523,7 +524,8 @@ static void
>> > hist_browser__show_callchain_entry(struct hist_browser *browser,
>> > ui_browser__set_color(&browser->b, color);
>> > hist_browser__gotorc(browser, row, 0);
>> > slsmg_write_nstring(" ", offset);
>> > - slsmg_printf("%c ", folded_sign);
>> > + slsmg_printf("%c", folded_sign);
>> > + ui_browser__write_graph(&browser->b, show_annotated ?
>> > SLSMG_RARROW_CHAR : ' ');
>> > slsmg_write_nstring(str, width);
>> > }
>> >
>> > --
>> > 1.9.3
>> >