Help us understand the problem. What is going on with this article?

systemtap小ネタ

More than 1 year has passed since last update.

思い付いた/思い出したら追記します。時代は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

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

SIGABRT
備忘録をここに残します。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした