Solaris 動的トレースガイド

END プローブ

END プローブは、一番最後に起動するプローブです。このプローブは、ほかのすべてのプローブ節が完了するまで起動しません。このプローブを使って、収集された状態を処理したり、出力に書式を設定したりできます。このため、END プローブでは、printa() アクションがよく使用されます。BEGIN プローブと END プローブを組み合わせると、トレースにかかった合計時間を測定できます。

BEGIN
{
	start = timestamp;
}

/*
 * ... other tracing actions...
 */

END
{
	printf("total time: %d secs", (timestamp - start) / 1000000000);
}

END プローブのその他の使用方法については、「データの正規化」printa()を参照してください。

BEGIN プローブの場合と同じく、END プローブにも引数は定義されていません。END プローブの起動は任意のコンテキストで行われるので、これに依存するプログラムを作成してはいけません。

bufpolicy オプションに値 fill を設定してトレースを行うと、END プローブでトレースされるレコード用に、適切な空間が予約されます。詳細については、fill ポリシーと END プローブ」を参照してください。


注 –

exit() アクションは、トレースを停止し、END プローブを起動します。ただし、exit() アクションが呼び出されてから END プローブが起動するまでには、多少の遅延が発生します。この遅延の間、プローブは一切起動しません。プローブが exit() アクションを呼び出したあと、DTrace コンシューマが「exit() が呼び出された」と判断し、トレースを停止するまで、END プローブは起動しません。終了状態のチェックの間隔は、statusrate オプションで設定します。詳細については、第 16 章オプションとチューニング可能パラメータを参照してください。