[ktap] ktap now support userspace function and static marks tracing

  • From: Jovi Zhangwei <jovi.zhangwei@xxxxxxxxx>
  • To: ktap <ktap@xxxxxxxxxxxxx>
  • Date: Fri, 15 Nov 2013 19:20:03 +0800

Hi guys,

I'm glad to tell you that ktap now support userspace function
and static marks tracing.

1. userspace function tracing

You can trace usespace function by name or glob matching.

        #Example 1: (uprobe)

        trace probe:/lib64/libc.so.6:malloc {
                print(execname(), argevent)
        }


        #Example 2: (uretprobe)

        trace probe:/lib64/libc.so.6:malloc%return {
                print(execname(), argevent)
        }

        #Example 3: (uprobe with glob matching, trace all functions in glibc)

        trace probe:/lib64/libc.so.6:* {
                print(execname(), argevent)
        }

It shows there have 5165 glibc symbols in my system.

[root@localhost ktap]# cat /sys/kernel/debug/tracing/uprobe_events

p:uprobes/kp0_check_one_fd /lib64/libc.so.6:0x000000000001f410
p:uprobes/kp1_init /lib64/libc.so.6:0x000000000001f485
p:uprobes/kp2_free_derivation /lib64/libc.so.6:0x0000000000161d30
p:uprobes/kp3_derivation_compare /lib64/libc.so.6:0x00000000000231e0
p:uprobes/kp4_free_modules_db /lib64/libc.so.6:0x0000000000161df0
p:uprobes/kp5_free_mem /lib64/libc.so.6:0x00000000001625e
...
p:uprobes/kp5162_pututxline /lib64/libc.so.6:0x000000000012f490
p:uprobes/kp5163_dup3 /lib64/libc.so.6:0x00000000000e7070
p:uprobes/kp5164_timespec_get /lib64/libc.so.6:0x00000000000b7b90


2. userspace static marker tracing

Similarly, we also can trace sdt with glob matching.

        #Example 1: (trace static marker lll_futex_wake)

        trace sdt:/lib64/libc.so.6:lll_futex_wake {
                print(execname(), argevent)
        }

        #Example 2: (trace all static markers in glibc, with glob matching)

        trace sdt:/lib64/libc.so.6:* {
                print(execname(), argevent)
        }

And uprobe_events file looks like (for example 2):

[root@localhost ktap]# cat /sys/kernel/debug/tracing/uprobe_events

p:uprobes/kp0_setjmp /lib64/libc.so.6:0x0000000000035801
p:uprobes/kp1_longjmp /lib64/libc.so.6:0x00000000000358e3
p:uprobes/kp2_longjmp_target /lib64/libc.so.6:0x00000000000358ff
p:uprobes/kp3_lll_futex_wake /lib64/libc.so.6:0x00000000000bc9ad
p:uprobes/kp4_lll_lock_wait_private /lib64/libc.so.6:0x0000000000102a94
p:uprobes/kp5_longjmp /lib64/libc.so.6:0x000000000010c903
p:uprobes/kp6_longjmp_target /lib64/libc.so.6:0x000000000010c91f
p:uprobes/kp7_lll_futex_wake /lib64/libc.so.6:0x0000000000130164


Special thanks for Azat Khuzhin on this ktap symbol parse work,
most of symbol code was contributed by Azat, great thanks.

Jovi

Other related posts:

  • » [ktap] ktap now support userspace function and static marks tracing - Jovi Zhangwei