DTrace では trace/printf/printa にて出力2009年03月04日 00時56分10秒

D スクリプト言語には三つの出力関数が用意されている。trace 関数で書式を指定しないで、printf 関数で書式を指定して、データを出力できる。printa 関数は連想配列を出力するのに使う。

trace 関数は、dtrace の D スクリプト言語で結果を出力するときに使う一番簡単な関数。出力の形式は、データ型と内容によって決定される。1、2、4、8 バイトであれば数字として出力。もしそれ以外のバイト数であり、表示可能な文字であった場合は、ASCII 文字列として表示される。それ以外であれば 16 進数の羅列として表示される。

printf 関数は、C 言語のような書式を指定して、データを出力できる。printf は D スクリプト言語に組み込まれた関数であり、C 言語には無い機能を提供する。以下に幾つかの特徴的な違いを並べる。

  1. D スクリプト言語コンパイラは printf の書式とデータ型を比べて、問題があると警告する。最近の C 言語のコンパイラは、同じことをする物が多いが、これは必須ではない。
  2. C 言語では、データの大きさを示すために、l や h 等を使う。C 言語では、数値であっても short と long でバイト数が違うのを関数に教えなければならない。しかし、D スクリプト言語ではコンパイラがこれを正しく扱う為、むしろこれらの利用は非推奨になっている。
  3. %a によるポインタの出力にはシンボルとオフセットが表示されたり、%Y にて、ctime 形式の日付が出力できたりとデバッグに便利な書式が追加されている。

printa 関数は Aggregation 型のデータを表示するのに使われる。Aggregation 型はいわゆる連想配列だ。Aggregation/連想配列は統計をとる時などに有用だ。

Output Formatting にて、更に細かい解説がされている。