2.3.1 例: tick.dの使用

次に、tick.dプログラムの例を示します。

/* tick.d -- Perform an action at regular intervals */

BEGIN
{
  i = 0;
}

profile:::tick-1sec
{
  printf("i = %d\n",++i);
}

END
{
  trace(i);
}

この例では、プログラムはDプログラムの起動時に変数iを宣言および初期化し、変数を増分して1秒ごとに値を出力し、プログラムの終了時に最後の値iを表示します。

このプログラムを実行すると、Ctrl-Cと入力するまで、次のような出力が生成されます:

# dtrace -s tick.d 
dtrace: script 'tick.d' matched 3 probes
CPU     ID                    FUNCTION:NAME
  1   5315                       :tick-1sec i = 1

  1   5315                       :tick-1sec i = 2

  1   5315                       :tick-1sec i = 3

  1   5315                       :tick-1sec i = 4

  1   5315                       :tick-1sec i = 5

  1   5315                       :tick-1sec i = 6

^C
  1   5315                       :tick-1sec i = 7

  0      2                             :END         7 

printf()およびtrace()からの出力以外の出力をすべて抑制するには、-q オプションを指定します:

# dtrace -q -s tick.d 
i = 1
i = 2
i = 3
i = 4
^C
i = 5
5