Re: [PATCH v4] perf-probe: Support escaped character in parser

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Em Wed, Dec 13, 2017 at 12:05:12AM +0900, Masami Hiramatsu escreveu:
> Support the special characters escaped by '\' in parser.
> This allows user to specify versions directly like below.
> 
>   =====
>   # ./perf probe -x /lib64/libc-2.25.so malloc_get_state\\@GLIBC_2.2.5
>   Added new event:
>     probe_libc:malloc_get_state (on malloc_get_state@GLIBC_2.2.5 in /usr/lib64/libc-2.25.so)
> 
>   You can now use it in all perf tools, such as:
> 
> 	  perf record -e probe_libc:malloc_get_state -aR sleep 1
> 
>   =====
> 
> Or, you can use separators in source filename, e.g.
> 
>   =====
>   # ./perf probe -x /opt/test/a.out foo+bar.c:3
>   Semantic error :There is non-digit character in offset.
>     Error: Command Parse Error.
>   =====
> 
> Usually "+" in source file cause parser error, but
> 
>   =====
>   # ./perf probe -x /opt/test/a.out foo\\+bar.c:4
>   Added new event:
>     probe_a:main         (on @foo+bar.c:4 in /opt/test/a.out)
> 
>   You can now use it in all perf tools, such as:
> 
> 	  perf record -e probe_a:main -aR sleep 1
>   =====
> 
> escaped "\+" allows you to specify that.

<SNIP>
 
>  Changes in v4:
>   - Fix a build error (Thanks for Arnaldo!)
>     This time, I ensured that I ran "make build-test" and it passed.

Thanks, testing it I still have that artifact:

 ---------------------------------------

[root@jouet perf]# perf probe -x /lib64/libc-2.25.so malloc_get_state\\@GLIBC_2.2.5
Added new event:
  probe_libc:malloc_get_state (on malloc_get_state@GLIBC_2.2.5 in /usr/lib64/libc-2.25.so)

You can now use it in all perf tools, such as:

	perf record -e probe_libc:malloc_get_state -aR sleep 1

[root@jouet perf]# perf probe -l
Failed to find debug information for address dd38eca7
  probe_libc:malloc_get_state (on 0xdd38eca7 in /usr/lib64/libc-2.25.so)
[root@jouet perf]#

 ---------------------------------------

I mean the "on 0xdd38eca7" part:


That failed to find debug information part:

[root@jouet perf]# perf probe -vv -l
Add filter: *
Opening /sys/kernel/debug/tracing//kprobe_events write=0
Opening /sys/kernel/debug/tracing//uprobe_events write=0
Parsing probe_events: p:probe_libc/malloc_get_state /usr/lib64/libc-2.25.so:0x00000000dd38eca7
Group:probe_libc Event:malloc_get_state probe:p
try to find information at dd38eca7 in /usr/lib64/libc-2.25.so
Open Debuginfo file: /usr/lib/debug/usr/lib64/libc-2.25.so.debug
Failed to find debug information for address dd38eca7
Failed to find corresponding probes from debuginfo.
symsrc__init: build id mismatch for /usr/lib/debug/usr/lib64/libc-2.25.so.debug.
Failed to find probe point from both of dwarf and map.
  probe_libc:malloc_get_state (on 0xdd38eca7 in /usr/lib64/libc-2.25.so)
[root@jouet perf]#

Ok, so build-id mismatch, lets see:

[root@jouet perf]# rpm -q glibc glibc-debuginfo
glibc-2.25-10.fc26.x86_64
glibc-2.25-10.fc26.i686
glibc-debuginfo-2.25-12.fc26.x86_64
[root@jouet perf]#

Ok, the debuginfo file is newer than the glibc installed, updating glibc
now...

We could have a more informative message in this case, right? I.e.
something like:

[root@jouet perf]# perf probe -l
There was a build-id mismatch while trying to resolve 0xdd38eca7, please
check your system's debuginfo files for mismatches, e.g. check the
versions for glibc and glibc-debuginfo.
  probe_libc:malloc_get_state (on 0xdd38eca7 in /usr/lib64/libc-2.25.so)
[root@jouet perf]#

- Arnaldo
--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux