Difference between revisions of "SystemTap"

From ArchWiki
Jump to: navigation, search
m (Fix category.)
m
(One intermediate revision by one other user not shown)
Line 21: Line 21:
 
By default only ''CONFIG_DEBUG_INFO'' and ''CONFIG_KPROBES'' are not set.
 
By default only ''CONFIG_DEBUG_INFO'' and ''CONFIG_KPROBES'' are not set.
  
With current core/linux (3.5.3) you can simply append these lines into config[.x86_64]:
+
With current core/linux (3.5.4) you can simply append these lines into config[.x86_64]:
 
{{hc|x86_64|
 
{{hc|x86_64|
 
<nowiki>
 
<nowiki>
Line 38: Line 38:
 
</nowiki>
 
</nowiki>
 
}}
 
}}
If have problem on compiling the linux-3.5.3-1, refer to this commit: [https://projects.archlinux.org/svntogit/packages.git/commit/trunk/PKGBUILD?h=packages/linux&id=906c4499f7c48efe2a95bfd5c632d484d6b7ef2f&ss=1]
 
  
 
===update checksum===
 
===update checksum===
Line 61: Line 60:
 
==Build custom kernel==
 
==Build custom kernel==
 
Please reference this [http://sourceware.org/git/?p=systemtap.git;a=blob_plain;f=README;hb=HEAD README]
 
Please reference this [http://sourceware.org/git/?p=systemtap.git;a=blob_plain;f=README;hb=HEAD README]
 +
 +
==Troubleshooting==
 +
 +
=== Pass 4 fails when launching ===
 +
 +
If you have:
 +
 +
    /usr/share/systemtap/runtime/stat.c:214:2: error: 'cpu_possible_map' undeclared (first use in this function)
 +
 +
Try to install systemtap-git package
 +
 +
=== System.tap is missing ===
 +
 +
You can recover it where you build your linux kernel with DEBUG_INFO enabled
 +
   
 +
    cp src/linux-3.6/System.map /boot/System.map-3.6.7-1-ARCH

Revision as of 12:27, 29 November 2012

Systemtap provides free software (GPL) infrastructure to simplify the gathering of information about the running Linux system.

Easy and fast

Officially, it is recommended to build a linux-custom package to run systemtap, but rebuilding the original linux package can be very easy and efficient.

Prepare

You can run sudo abs; cp -r /var/abs/core/linux . to get the original kernel build files.

modify config

Edit config (for 32-bit systems) or config.x86_64 (for 64-bit systems), turn on these options:

  • CONFIG_DEBUG_INFO=y
  • CONFIG_KPROBES=y
  • CONFIG_RELAY=y
  • CONFIG_DEBUG_FS=y
  • CONFIG_MODULES=y
  • CONFIG_MODULE_UNLOAD=y
  • CONFIG_UTRACE=y

By default only CONFIG_DEBUG_INFO and CONFIG_KPROBES are not set.

With current core/linux (3.5.4) you can simply append these lines into config[.x86_64]:

x86_64

echo '
CONFIG_UTRACE=y
CONFIG_KPROBES=y
CONFIG_KPROBES_SANITY_TEST=n
CONFIG_KPROBE_EVENT=y
CONFIG_NET_DCCPPROBE=m
CONFIG_NET_SCTPPROBE=m
CONFIG_NET_TCPPROBE=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_INFO_REDUCED=n
CONFIG_X86_DECODER_SELFTEST=n
' >> config.x86_64

update checksum

Run md5sum config[.x86_64] to get a new md5sum.

In PKGBUILD file, the md5sums=('sum-of-first' ... 'sum-of-last') has the same order with source=('first-source' ... 'last-source'), put your new md5sum in the right place.

Build and Install

Optional: you can set MAKEFLAGS="-j16" in /etc/makepkg.conf to speed up the compilation.

Run makepkg to compile, then simply sudo pacman -U *.pkg.tar.gz to install the packages. pacman will tell you reinstall, That's great!

linux and linux-headers should be reinstalled, linux-docs does not matter.

Via this method, external modules (e.g. nvidia and virtualbox) don't need to be rebuilt.

Systemtap

Simply install systemtap from AUR: systemtapAUR, all done.

Build custom kernel

Please reference this README

Troubleshooting

Pass 4 fails when launching

If you have:

   /usr/share/systemtap/runtime/stat.c:214:2: error: 'cpu_possible_map' undeclared (first use in this function)

Try to install systemtap-git package

System.tap is missing

You can recover it where you build your linux kernel with DEBUG_INFO enabled

   cp src/linux-3.6/System.map /boot/System.map-3.6.7-1-ARCH