1.5.1 例: BEGINプローブを使用するシンプルDプログラム(hello.d)

/* hello.d -- A simple D program that uses the BEGIN probe */

BEGIN
{
  /* This is a C-style comment */
  trace("hello, world");
  exit(0);
}

Dプログラムは、有効にする1つ以上のプローブについて記述する一連の節およびプローブの起動時に実行するオプションの一連のアクションで構成されています。 これらのアクションは、中カッコ{}で囲まれた一連の文としてプローブ名の後にリストされます。 各文は、セミコロン(;)で終わります。

この例では、関数traceが、指定された引数、文字列hello、world、BEGINプローブが起動したとき、それを出力するようDTraceに指示しています。 関数exit()は、トレースを中止してdtraceコマンドを終了するようにDTraceに指示します。

BEGINプローブのフルネームはdtrace:::BEGINです。dtraceには3つのプローブdtrace:::BEGINdtrace:::ENDおよびdtrace:::ERRORがあります。 これらのプローブ名はdtraceプロバイダに対して一意であるため、これらの名前はBEGINENDおよびERRORに短縮できます。

プログラムを保存した後は、Dプログラムを含むファイルの名前を指定する-s オプションを指定したdtrace コマンドを使用して、プログラムを実行できます:

# dtrace -s hello.d
dtrace: script 'hello.d' matched 1 probe
CPU     ID                    FUNCTION:NAME
  0      1                           :BEGIN   hello, world

DTraceによって、スクリプトが解釈されて実行されます。 文字列"hello,world"に加えて、DTraceのデフォルトの動作では、プローブの起動時にスクリプトが実行されたCPUに関する情報、プローブのID、プローブを含む関数の名前、およびプローブ自体の名前が表示されます。 BEGIN,の場合、DTraceによってこのプローブが提供されるため、関数名は空白として表示されます。

プローブの情報は多くの方法で抑制できます。たとえば、-qオプションを指定します。

# dtrace -q -s hello.d
hello, world