
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

SystemTap
---------

SystemTap is a robust system for tracing kernel and user events.


Requirements
------------
On Ubuntu systems (written against 14.04):
1. Install the 'systemtap' package.
2. Optionally install the 'systemtap-doc' package for some useful manpages
   (like 'stapprobes' and 'stapfuncs').
3. Run stap-prep. It'll probably tell you to do the following:
   a. Install the debug symbols for your kernel. Follow the instructions at
      https://wiki.ubuntu.com/DebuggingProgramCrash#Debug_Symbol_Packages to
      install the right package. It should be named something like
      linux-image-3.13.0-36-generic-dbgsym.
   b. Add yourself to both the 'stapusr' and 'stapdev' groups. This isn't
      strictly required; you can run SystemTap scripts as root.

On RHEL systems (written against CentOS 6.4):
1. Install the 'systemtap' package.
2. Install the debug symbols for your kernel. Follow the instructions at
   http://fendertech.blogspot.com/2013/04/centos-install-kernel-debuginfo.html
   to add the appropriate repo, then install the right package. It should be
   named something like kernel-debuginfo-2.6.32-358.23.2.el6.x86_64.
3. Add yourself to both the 'stapusr' and 'stapdev' groups. This isn't
   strictly required; you can run SystemTap scripts as root.

Running
-------
Some SystemTap scripts have a hashbang so that they can be run directly.
Others need to be run with the 'stap' binary.

Useful options include:
 -o FILE: send standard output to the given file.
 -c CMD: run the command, set the probe target to the command's PID, and exit
         when it finishes. Relevant for scripts that filter on target().
 -x PID: set the probe target to PID. Relevant for scripts that filter on
         target().
