1 Version 0.4 (Dec 9 2013)
2 -------------------------
3 = Highlight changes from v0.3
5 * kernel symbol read (syntax: `symbol_name`)
7 * parse symbol on uprobe (need libelf link)
8 trace probe:/lib64/libc.so.6:malloc {}
9 trace probe:/lib64/libc.so.6:malloc%return {}
10 trace probe:/lib64/libc.so.6:* {} # trace all function in glibc
12 * support static marker(SDT)
13 trace sdt:/lib64/libc.so.6:setjmp {}
14 trace sdt:/lib64/libc.so.6:* {} # trace all sdt in glibc
16 * support kprobe wildcard
19 * support run multiple ktap instances concurrently
21 * add command option for list available events and symbols
22 -le [glob] : list pre-defined events in system
23 -lf DSO : list available functions from DSO
24 -lm DSO : list available sdt notes from DSO
26 * better annotation for output of argname
28 * basic FFI support (depend on CONFIG_KTAP_FFI)
29 FFI will allow call kernel function from ktap script
31 cdef [[ int printk(char *fmt, ...); ]]
32 C.printk("this is ffi printk from ktap\n")
34 (currently only support basic C types, structure support is ongoing)
37 userspace/malloc_size_hist.kp
38 userspace/malloc_free.kp
39 userspace/gcc_unwind.kp
40 userspace/glibc_sdt.kp #trace all static marker in glibc
41 userspace/glibc_trace.kp #trace all functions in glibc
42 userspace/glibc_func_hist.kp #show glibc functions in histogram
43 syscalls/syslatl.kp #syscall latency linear aggregation
44 syscalls/syslist.kp #syscall latency as a list with counts
45 syscalls/opensnoop.kp #trace open() syscalls and print basic details
50 * use amalgamation build as default
51 x86_64 build: ktap binary size is 98K, ktapvm.ko size is 983K
53 * Big cleanups and lots of bugfix
56 Version 0.3 (Oct 29 2013)
57 -------------------------
58 = Highlight changes from v0.2
60 * Homepage released: www.ktap.org
62 * Tutorial: http://www.ktap.org/doc/tutorial.html
64 * Wiki: https://github.com/ktap/ktap/wiki
66 * simple new tracing block syntax
67 trace EVENTDEF { action }
70 * New event tracing keywords: argevent, argname, arg1..arg9
71 trace "syscalls:*" function () {
75 * New timer block syntax
79 * Basic aggregation support
80 It's similar with systemtap, use "<<<" operator
81 support aggregate function: count, sum, avg, max, min
83 * Introduce new "+=" operator
85 * Introduce sort_paris for table sort iteration
90 profiling/stack_profile.kp
94 schedule/schedtimes.kp
97 * ansi library for sending ANSI escape sequences
100 * statistics of ktapvm
102 * Big cleanups and lots of bugfix
104 Version 0.2 (Jul 31 2013)
105 -------------------------
107 = Script highlight changes from v0.1
109 * new tracing block syntax
110 trace EVENTDEF function (e) { BODY }
111 trace_end function (e) { BODY }
113 * support trace filter
114 trace 'sched:sched_switch /prev_comm == foo || next_comm == foo/
116 * support kprobe/kretprobe
117 trace "probe:do_sys_open dfd=%di filename=%dx flags=%cx mode=+4($stack)"
118 trace "probe:do_sys_open%return fd=$retval"
120 * support uprobe/uretprobe
121 trace "probe:/lib/libc.so.6:0x000773c0"
122 trace "probe:/lib/libc.so.6:0x000773c0%return"
124 * support function tracing
125 trace "ftrace:function /ip == mutex*/"
127 * support oneline scripting
128 ktap -e 'trace "syscalls:*" function (e) { print(e) }'
130 * specific pid or cpu to tracing
134 * more sample scripts
136 * support calling print_backtrace() in any context
138 * support calling exit() in any context
140 = Backend highlight changes from v0.1
142 * unified perf callback mechanism
143 * use ring buffer transport instead of relayfs
144 * reentrant in ktap tracing
145 * performance boost(use percpu data in many case)
146 * safe table/string manipulation
149 * fixed a lot of bugs, more stable than v0.1
151 Version 0.1 (May 21 2013)
152 -------------------------
154 https://lwn.net/Articles/551253/