diff options
author | Srikar Dronamraju <srikar@linux.vnet.ibm.com> | 2012-04-11 06:30:43 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2012-05-07 08:30:17 -0400 |
commit | f3f096cfedf8113380c56fc855275cc75cd8cf55 (patch) | |
tree | b8d0553afc8cebf6dd320d094206e93df5d95794 /kernel/trace/Kconfig | |
parent | 8ab83f56475ec9151645a888dfe1941f4a92091d (diff) |
tracing: Provide trace events interface for uprobes
Implements trace_event support for uprobes. In its current form
it can be used to put probes at a specified offset in a file and
dump the required registers when the code flow reaches the
probed address.
The following example shows how to dump the instruction pointer
and %ax a register at the probed text address. Here we are
trying to probe zfree in /bin/zsh:
# cd /sys/kernel/debug/tracing/
# cat /proc/`pgrep zsh`/maps | grep /bin/zsh | grep r-xp
00400000-0048a000 r-xp 00000000 08:03 130904 /bin/zsh
# objdump -T /bin/zsh | grep -w zfree
0000000000446420 g DF .text 0000000000000012 Base
zfree # echo 'p /bin/zsh:0x46420 %ip %ax' > uprobe_events
# cat uprobe_events
p:uprobes/p_zsh_0x46420 /bin/zsh:0x0000000000046420
# echo 1 > events/uprobes/enable
# sleep 20
# echo 0 > events/uprobes/enable
# cat trace
# tracer: nop
#
# TASK-PID CPU# TIMESTAMP FUNCTION
# | | | | |
zsh-24842 [006] 258544.995456: p_zsh_0x46420: (0x446420) arg1=446421 arg2=79
zsh-24842 [007] 258545.000270: p_zsh_0x46420: (0x446420) arg1=446421 arg2=79
zsh-24842 [002] 258545.043929: p_zsh_0x46420: (0x446420) arg1=446421 arg2=79
zsh-24842 [004] 258547.046129: p_zsh_0x46420: (0x446420) arg1=446421 arg2=79
Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Cc: Jim Keniston <jkenisto@linux.vnet.ibm.com>
Cc: Linux-mm <linux-mm@kvack.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Arnaldo Carvalho de Melo <acme@infradead.org>
Cc: Anton Arapov <anton@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20120411103043.GB29437@linux.vnet.ibm.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/trace/Kconfig')
-rw-r--r-- | kernel/trace/Kconfig | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig index ce5a5c54ac8f..ea4bff6295fc 100644 --- a/kernel/trace/Kconfig +++ b/kernel/trace/Kconfig | |||
@@ -386,6 +386,22 @@ config KPROBE_EVENT | |||
386 | This option is also required by perf-probe subcommand of perf tools. | 386 | This option is also required by perf-probe subcommand of perf tools. |
387 | If you want to use perf tools, this option is strongly recommended. | 387 | If you want to use perf tools, this option is strongly recommended. |
388 | 388 | ||
389 | config UPROBE_EVENT | ||
390 | bool "Enable uprobes-based dynamic events" | ||
391 | depends on ARCH_SUPPORTS_UPROBES | ||
392 | depends on MMU | ||
393 | select UPROBES | ||
394 | select PROBE_EVENTS | ||
395 | select TRACING | ||
396 | default n | ||
397 | help | ||
398 | This allows the user to add tracing events on top of userspace | ||
399 | dynamic events (similar to tracepoints) on the fly via the trace | ||
400 | events interface. Those events can be inserted wherever uprobes | ||
401 | can probe, and record various registers. | ||
402 | This option is required if you plan to use perf-probe subcommand | ||
403 | of perf tools on user space applications. | ||
404 | |||
389 | config PROBE_EVENTS | 405 | config PROBE_EVENTS |
390 | def_bool n | 406 | def_bool n |
391 | 407 | ||