From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753246AbbC3Tsu (ORCPT ); Mon, 30 Mar 2015 15:48:50 -0400 Received: from bombadil.infradead.org ([198.137.202.9]:52819 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752684AbbC3Tss (ORCPT ); Mon, 30 Mar 2015 15:48:48 -0400 Date: Mon, 30 Mar 2015 16:48:49 -0300 From: Arnaldo Carvalho de Melo To: Jiri Olsa Cc: Masami Hiramatsu , Ingo Molnar , Namhyung Kim , Peter Zijlstra , David Ahern , linux-kernel@vger.kernel.org, Martin Cermak Subject: Re: [RFC] perf probe: -x option position issue Message-ID: <20150330194849.GH32560@kernel.org> References: <20150330174655.GA27546@krava.redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150330174655.GA27546@krava.redhat.com> X-Url: http://acmel.wordpress.com User-Agent: Mutt/1.5.23 (2014-03-12) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Em Mon, Mar 30, 2015 at 07:46:55PM +0200, Jiri Olsa escreveu: > hi, > Martin found out following issue.. having following ex binary: > > --- > int main(void) > { > return 0; > } > --- > > following will create uprobe on main: > > [root@dell-per510-01 perf]# gcc -g -o ex ex.c > [root@dell-per510-01 perf]# ./perf probe -x ./ex -a main > Added new event: > probe_ex:main (on main in /root/linux/tools/perf/ex) > > You can now use it in all perf tools, such as: > > perf record -e probe_ex:main -aR sleep 1 > > [root@dell-per510-01 perf]# cat /sys/kernel/debug/tracing/uprobe_events > p:probe_ex/main /root/linux/tools/perf/ex:0x00000000000004f6 > > > while following will create (?) kprobe with complain in dmesg: Right, it looks like it will create the probe on the currently selected DSO, which, if you have none, will be the kernel, thus the kprobe (probe:main), while if you do a '-x ./ex -a main' you are selecting the 'ex' DSO and then asking for the probe to be added to a function named 'main', on that DSO, that 'perf probe' realizes is a userspace binary, thus creates a uprobe: probe_%DSONAME:%FUNCTIONAME. I wonder if I can do: [root@ssdandy acme]# perf probe -a icmp_rcv -x ./ex -a main Probe point 'icmp_rcv' not found. Error: Failed to add events. No, I can't, I'd say we should support that, i.e. inserting multiple probes per command line, for different DSOs, etc. I.e. the above would be equivalent to these two calls: [root@ssdandy acme]# perf probe -a icmp_rcv Added new event: probe:icmp_rcv (on icmp_rcv) You can now use it in all perf tools, such as: perf record -e probe:icmp_rcv -aR sleep 1 [root@ssdandy acme]# perf probe -x ./ex -a main Added new event: probe_ex:main (on main in /home/acme/ex) You can now use it in all perf tools, such as: perf record -e probe_ex:main -aR sleep 1 [root@ssdandy acme]# But it isn't like that, so, yes, what you report is a bug, both for your expectation (that I think is that it should put a uprobes with both your examples) and for mine (that it would add the first to the kernel, and the second to the selected DSO via -x). - Arnaldo > [root@dell-per510-01 perf]# gcc -g -o ex ex.c > [root@dell-per510-01 perf]# ./perf probe -a main -x ./ex > Added new event: > probe:main (on main in ex) > > You can now use it in all perf tools, such as: > > perf record -e probe:main -aR sleep 1 > > [root@dell-per510-01 perf]# dmesg | tail -2 > [16986.182159] Could not insert probe at ex:main+0: -2 > [16986.187030] This probe might be able to register aftertarget module is loaded. Continue. > > > that does not seem as an expected behaviour, or am I missing something? > > thanks, > jirka