Re: [PATCH] perf-probe: make "perf-probe -L <function>" display theabsolute path and absolute line number

From: Masami Hiramatsu
Date: Thu Jan 13 2011 - 06:03:15 EST


(2011/01/13 19:20), Franck Bui-Huu wrote:
> From: Franck Bui-Huu <fbuihuu@xxxxxxxxx>
>
> It should be more usefull to get the full location of the function
> (absolute line number + full path) instead of repeating the name of
> the function and the start line number given by the command line.
>
> So we had before:
>
> $ perf probe -L schedule | head -n3
> <schedule:0>
> 0 asmlinkage void __sched schedule(void)
> 1 {
>
> and now we get:
>
> $ perf probe -L schedule | head -n3
> </usr/src/debug/kernel-2.6.35.fc14/linux-2.6.35.x86_64/kernel/sched.c:3813>
> 0 asmlinkage void __sched schedule(void)
> 1 {

Indeed, it could be useful for users to see where the function is...

However, I think that should be optional, because the output lines
have the relative line numbers from the function, and those numbers
are important for users who want to probe a specific line by using
function relative line numbers. e.g. "schedule:10"

And with that option, I'd suggest to show absolute line numbers on each line.

$ perf probe -L schedule:0-1 --by-source
</usr/src/debug/kernel-2.6.35.fc14/linux-2.6.35.x86_64/kernel/sched.c:3813>
3813 asmlinkage void __sched schedule(void)
3814 {

Or, just show source file as an additional information.

$ perf probe -L schedule:0-1
<schedule@/usr/src/debug/kernel-2.6.35.fc14/linux-2.6.35.x86_64/kernel/sched.c:0>
0 asmlinkage void __sched schedule(void)
1 {

I just would like to keep the consistency of the output/input format.
In above cases, users can define a new event just by replacing the last
number with the line number which they see.

Thank you,

>
> Signed-off-by: Franck Bui-Huu <fbuihuu@xxxxxxxxx>
> ---
> tools/perf/util/probe-event.c | 6 +-----
> 1 files changed, 1 insertions(+), 5 deletions(-)
>
> diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
> index fcbb543..bd09b87 100644
> --- a/tools/perf/util/probe-event.c
> +++ b/tools/perf/util/probe-event.c
> @@ -382,11 +382,7 @@ int show_line_range(struct line_range *lr, const char *module)
>
> setup_pager();
>
> - if (lr->function)
> - fprintf(stdout, "<%s:%d>\n", lr->function,
> - lr->start - lr->offset);
> - else
> - fprintf(stdout, "<%s:%d>\n", lr->path, lr->start);
> + fprintf(stdout, "<%s:%d>\n", lr->path, lr->start);
>
> fp = fopen(lr->path, "r");
> if (fp == NULL) {


--
Masami HIRAMATSU
2nd Dept. Linux Technology Center
Hitachi, Ltd., Systems Development Laboratory
E-mail: masami.hiramatsu.pt@xxxxxxxxxxx
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/