From: Masami Hiramatsu <mhiramat@redhat.com>
To: Frederic Weisbecker <fweisbec@gmail.com>,
Steven Rostedt <rostedt@goodmis.org>, Ingo Molnar <mingo@elte.hu>,
lkml <linux-kernel@vger.kernel.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>,
Ingo Molnar <mingo@elte.hu>, Thomas Gleixner <tglx@linutronix.de>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Steven Rostedt <rostedt@goodmis.org>,
Mike Galbraith <efault@gmx.de>, Paul Mackerras <paulus@samba.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Christoph Hellwig <hch@infradead.org>,
Ananth N Mavinakayanahalli <ananth@in.ibm.com>,
Jim Keniston <jkenisto@us.ibm.com>,
"Frank Ch. Eigler" <fche@redhat.com>,
systemtap <systemtap@sources.redhat.com>,
DLE <dle-develop@lists.sourceforge.net>
Subject: [PATCH tracing/kprobes v3 0/7] tracing/kprobes, perf: perf probe support take 3
Date: Wed, 07 Oct 2009 18:27:33 -0400 [thread overview]
Message-ID: <20091007222733.1684.32035.stgit@dhcp-100-2-132.bos.redhat.com> (raw)
Hi,
These patches introduce 'perf probe' command and update kprobe-tracer.
perf probe command allows you to add new probe points by C line number
and local variable names.
This version fixes some bugs, remove -r option (because perf always be
used for online kernel) and rename kprobe-tracer special vars.
Usage
-----
perf probe [<options>] -P 'PROBEDEF' [-P 'PROBEDEF' ...]
-k, --vmlinux <file> vmlinux/module pathname
-P, --probe <p|r:[GRP/]NAME FUNC[+OFFS][@SRC]|@SRC:LINE [ARG ...]>
probe point definition, where
p: kprobe probe
r: kretprobe probe
GRP: Group name (optional)
NAME: Event name
FUNC: Function name
OFFS: Offset from function entry (in byte)
SRC: Source code path
LINE: Line number
ARG: Probe argument (local variable name or
kprobe-tracer argument format is supported.)
Examples
--------
1) Add a new kprobe probe on a line of C source code.
./perf probe -P 'p:myprobe @fs/read_write.c:285 file buf count'
Adding new event: p:myprobe vfs_read+57 file=%bx buf=%si count=%ax
2) Add a new kretprobe probe on a function return.
./perf probe -P 'r:myretprobe vfs_read $retval'
Adding new event: r:myretprobe vfs_read+0 $retval
3) Check it in the perf list.
./perf list
...
rNNN [raw hardware event descriptor]
kprobes:myprobe [Tracepoint event]
kprobes:myretprobe [Tracepoint event]
skb:kfree_skb [Tracepoint event]
...
4) Record the event by perf
./perf record -f -e kprobes:myprobe:record -F 1 -a ls
...
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.081 MB perf.data (~3540 samples) ]
5) Trace the event
./perf trace
perf-11445 [000] 95862.048894383: myprobe: (c04bbed5) file=dae15e80 buf=b78b2000 count=400
perf-11445 [000] 95862.049066533: myprobe: (c04bbed5) file=dae15d80 buf=b78b2000 count=400
perf-11445 [000] 95862.049134394: myprobe: (c04bbed5) file=dae15d80 buf=b78b2000 count=400
perf-11445 [000] 95862.049171495: myprobe: (c04bbed5) file=dae15a80 buf=b78b2000 count=400
NOTE
----
perf still fails to parse format if arguments have special charactors
(e.g. $retval, +16($stack) etc.) So, tracing myretprobe will fail with this
version. This will be solved by naming arguments automatically if it
doesn't have C-language name.
TODO
----
- Support sys_perf_counter_open (non-root)
- Input from stdin/output to stdout
- 64-bits return value on x86-32
- Static variable
- Fields of data structures (var->field)
- Type support
- Bit fields
- Array (var[N])
- Dynamic array indexing (var[var2])
- String/dynamic arrays (var:string, var[N..M])
- Force Type casting ((type)var)
- Non-inline search
- libdw, libdwfl
- etc.
Thank you,
---
Masami Hiramatsu (7):
perf: perf probe command supports without libdwarf
perf: Add perf probe subcommand for kprobe-event setup helper
tracing/kprobes: Rename fixed field name
tracing/kprobes: Avoid field name confliction
tracing/kprobes: Rename special variables
tracing/kprobes: Remove '$ra' special variable
tracing/kprobes: Add $ prefix to special variables
Documentation/trace/kprobetrace.txt | 27 +
kernel/trace/trace_kprobe.c | 158 +++++---
tools/perf/Makefile | 10 +
tools/perf/builtin-probe.c | 385 ++++++++++++++++++++
tools/perf/builtin.h | 1
tools/perf/perf.c | 1
tools/perf/util/probe-finder.c | 690 +++++++++++++++++++++++++++++++++++
tools/perf/util/probe-finder.h | 70 ++++
8 files changed, 1269 insertions(+), 73 deletions(-)
create mode 100644 tools/perf/builtin-probe.c
create mode 100644 tools/perf/util/probe-finder.c
create mode 100644 tools/perf/util/probe-finder.h
--
Masami Hiramatsu
Software Engineer
Hitachi Computer Products (America), Inc.
Software Solutions Division
e-mail: mhiramat@redhat.com
next reply other threads:[~2009-10-07 22:37 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-07 22:27 Masami Hiramatsu [this message]
2009-10-07 22:27 ` [PATCH tracing/kprobes v3 1/7] tracing/kprobes: Add $ prefix to special variables Masami Hiramatsu
2009-10-12 19:33 ` Masami Hiramatsu
2009-10-17 10:03 ` [tip:perf/probes] " tip-bot for Masami Hiramatsu
2009-10-07 22:27 ` [PATCH tracing/kprobes v3 2/7] tracing/kprobes: Remove '$ra' special variable Masami Hiramatsu
2009-10-17 10:03 ` [tip:perf/probes] " tip-bot for Masami Hiramatsu
2009-10-07 22:27 ` [PATCH tracing/kprobes v3 3/7] tracing/kprobes: Rename special variables Masami Hiramatsu
2009-10-12 21:20 ` Masami Hiramatsu
2009-10-12 21:28 ` Frederic Weisbecker
2009-10-12 21:36 ` Masami Hiramatsu
2009-10-12 21:34 ` Frederic Weisbecker
2009-10-17 10:03 ` [tip:perf/probes] tracing/kprobes: Make special variable names more self-explainable tip-bot for Masami Hiramatsu
2009-10-07 22:28 ` [PATCH tracing/kprobes v3 4/7] tracing/kprobes: Avoid field name confliction Masami Hiramatsu
2009-10-12 10:10 ` Frédéric Weisbecker
2009-10-12 10:12 ` Frédéric Weisbecker
2009-10-12 17:37 ` Frederic Weisbecker
2009-10-12 19:13 ` Masami Hiramatsu
2009-10-12 19:48 ` Frederic Weisbecker
2009-10-12 20:22 ` Masami Hiramatsu
2009-10-12 21:16 ` Frederic Weisbecker
2009-10-17 10:03 ` [tip:perf/probes] " tip-bot for Masami Hiramatsu
2009-10-07 22:28 ` [PATCH tracing/kprobes v3 5/7] tracing/kprobes: Rename fixed field name Masami Hiramatsu
2009-10-17 10:04 ` [tip:perf/probes] tracing/kprobes: Robustify fixed field names against variable field names conflicts tip-bot for Masami Hiramatsu
2009-10-07 22:28 ` [PATCH tracing/kprobes v3 6/7] perf: Add perf probe subcommand for kprobe-event setup helper Masami Hiramatsu
2009-10-08 21:17 ` Masami Hiramatsu
2009-10-08 21:17 ` [PATCH tracing/kprobes v4] " Masami Hiramatsu
2009-10-12 10:31 ` Frédéric Weisbecker
2009-10-12 14:40 ` Masami Hiramatsu
2009-10-12 18:03 ` Frederic Weisbecker
2009-10-12 18:07 ` Frederic Weisbecker
2009-10-12 19:00 ` Masami Hiramatsu
2009-10-17 10:04 ` [tip:perf/probes] perf: Add perf probe subcommand, a " tip-bot for Masami Hiramatsu
2009-10-08 21:17 ` [PATCH tracing/kprobes v3 6/7] perf: Add perf probe subcommand for " Frederic Weisbecker
2009-10-12 19:03 ` Frederic Weisbecker
2009-10-12 19:07 ` Ingo Molnar
2009-10-12 19:31 ` Masami Hiramatsu
2009-10-07 22:28 ` [PATCH tracing/kprobes v3 7/7] perf: perf probe command supports without libdwarf Masami Hiramatsu
2009-10-17 10:04 ` [tip:perf/probes] perf probe: Add perf probe command support " tip-bot for Masami Hiramatsu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20091007222733.1684.32035.stgit@dhcp-100-2-132.bos.redhat.com \
--to=mhiramat@redhat.com \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@redhat.com \
--cc=ananth@in.ibm.com \
--cc=dle-develop@lists.sourceforge.net \
--cc=efault@gmx.de \
--cc=fche@redhat.com \
--cc=fweisbec@gmail.com \
--cc=hch@infradead.org \
--cc=jkenisto@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=paulus@samba.org \
--cc=rostedt@goodmis.org \
--cc=systemtap@sources.redhat.com \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®