systemtap: a linux trace/probe tool Visit the project web site at , for documentation and mailing lists for developers and users. This is free software. See the COPYING file for redistribution/modification terms. See the INSTALL file for generic build instructions. Prerequisites: - linux kernel with kprobes (mainline 2.6.11+ or backport) - kernel module build environment (kernel-devel or kernel-smp-devel rpm) - kernel debugging information (kernel-debuginfo rpm) - C compiler (same as what kernel was compiled with) - elfutils with libdwfl (possible to reuse system elfutils if new and complete enough, otherwise download source snapshot and build together with systemtap as follows) - root privileges Installation steps: - Install the kernel-debuginfo, kernel-[smp-]devel, gcc packages. - Install the systemtap package, if one already exists. Build steps: - Install the kernel-debuginfo, kernel-[smp-]devel, gcc and libcap-devel packages (or see below if you are building your own kernels from source). - Download the latest elfutils snapshot (if desired): ftp://sources.redhat.com/pub/systemtap/elfutils/elfutils-NNNN.tar.gz ftp://sources.redhat.com/pub/systemtap/elfutils/elfutils-portability.patch - Untar the snapshot in some new directory; apply patch (don't ask, long story) - Download systemtap sources snapshot or from CVS or GIT: ftp://sources.redhat.com/pub/systemtap/snapshots/ (or) cvs -d :pserver:anoncvs@sources.redhat.com:/cvs/systemtap login # enter "anoncvs" as the password cvs -d :pserver:anoncvs@sources.redhat.com:/cvs/systemtap co src (or) git clone git://sources.redhat.com/git/systemtap.git (or) http://sources.redhat.com/git/systemtap.git - Build it: cd src ./configure --with-elfutils=PATCHED-ELFUTILS-DIR [other autoconf options] make all check sudo make install Tips: - Systemtap looks for the debug info in these locations: /boot/vmlinux-`uname -r` /usr/lib/debug/lib/modules/`uname -r`/vmlinux /lib/modules/`uname -r`/vmlinux Building a kernel.org kernel: - Build the kernel using your normal procedures. Enable CONFIG_DEBUG_INFO, CONFIG_KPROBES, and optionally CONFIG_RELAY and CONFIG_DEBUG_FS. - Boot into the kernel. - Make sure the large unstripped kernel image 'vmlinux' from your build can be found by systemtap (see above) You can just symlink it to one of these locations. - Symlink your source directory to these two places, though systemtap does not at present use such source code. - /usr/src/kernels/`uname -r` - /lib/modules/`uname -r`/source - Symlink your build directory to here: - /lib/modules/`uname -r`/build - For example, if your kernel source is in /home/me/linux/2.6.17-rc6 and you build your kernel in the source directory, you would do this (be sure you are running the right kernel or `uname -r` will be wrong:) ln -s /home/me/linux/2.6.17-rc6/vmlinux /boot/vmlinux-`uname -r` mkdir /usr/src/kernels (if needed) ln -s /home/me/linux/2.6.17-rc6 /usr/src/kernels/`uname -r` mkdir /lib/modules/`uname -r` (if needed) ln -s /home/me/linux/2.6.17-rc6 /lib/modules/`uname -r`/build ln -s /home/me/linux/2.6.17-rc6 /lib/modules/`uname -r`/source