All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH tracing/kprobes v3 0/7] tracing/kprobes, perf: perf probe support take 3
@ 2009-10-07 22:27 Masami Hiramatsu
  2009-10-07 22:27 ` [PATCH tracing/kprobes v3 1/7] tracing/kprobes: Add $ prefix to special variables Masami Hiramatsu
                   ` (6 more replies)
  0 siblings, 7 replies; 38+ messages in thread
From: Masami Hiramatsu @ 2009-10-07 22:27 UTC (permalink / raw)
  To: Frederic Weisbecker, Steven Rostedt, Ingo Molnar, lkml
  Cc: Frederic Weisbecker, Ingo Molnar, Thomas Gleixner,
	Arnaldo Carvalho de Melo, Steven Rostedt, Mike Galbraith,
	Paul Mackerras, Peter Zijlstra, Christoph Hellwig,
	Ananth N Mavinakayanahalli, Jim Keniston, Frank Ch. Eigler,
	systemtap, DLE

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

^ permalink raw reply	[flat|nested] 38+ messages in thread

end of thread, other threads:[~2009-10-17 10:05 UTC | newest]

Thread overview: 38+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-07 22:27 [PATCH tracing/kprobes v3 0/7] tracing/kprobes, perf: perf probe support take 3 Masami Hiramatsu
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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.