LoginSignup
0
0

More than 5 years have passed since last update.

systemtap小ネタ

Posted at

思い付いた/思い出したら追記します。時代はeBPFなのかも知れないけれど、old typeなのでまだまだsystemtapでがんばります。

begin/endプローブ

beginは、スクリプト起動時に実行される。stapコマンド起動時に-vオプションを忘れると、いつスクリプトの実行が開始されたか分からないので、私はいつもbeginでprintfを実行するようにしている。

endは終了時に実行される。Ctrl-Cで止めたときも実行されるので、統計を溜めておいて適当な時間後にCtrl-Cを押して結果を表示する、という使い方ができる。

probe begin {
  printf("Script starting\n");
}

probe end {
  printf("Result: %d\n", counter);
}

コマンドライン引数

stapコマンド起動時に引数を与えられる。第1引数は\$1、第2引数は\$2、...。@1、@2という形式で書くと、文字列扱い。

arg.stp
probe begin{
  printf("1st arg: %d\n", $1);
  printf("2nd arg: %s\n", @2);
}

実行例

$ sudo stap arg.stp 1 2
1st arg: 1
2nd arg: 2

引数はモジュールに定数として埋め込まれるようで、引数を変えるとスクリプトは再コンパイルされる。同じ引数を与えると、キャッシュが使われる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0