Solaris 動的トレースガイド

アプリケーションコードへのプローブの追加

.d ファイルを使ってプローブを定義できたら、ソースコードに、プローブがトリガーされる位置の情報を追加する必要があります。次のような C アプリケーションソースコードがあるとします。

void
main_look(void)
{
	...
	query = wait_for_new_query();
	process_query(query)
	...
}

プローブの位置の情報を追加するには、<sys/sdt.h>に定義されている DTRACE_PROBE() マクロの参照を追加します。次の例を参照してください。

#include <sys/sdt.h>
...

void
main_look(void)
{
	...
	query = wait_for_new_query();
	DTRACE_PROBE2(myserv, query__receive, query->clientname, query->msg);
	process_query(query)
	...
}

マクロ名 DTRACE_PROBE2 の接尾辞 2 は、プローブに渡される引数の数を表します。プローブマクロの最初の 2 つの引数は、プロバイダ名とプローブ名です。これらはそれぞれ、D プロバイダ定義とプローブ定義に一致していなければなりません。残りのマクロ引数は、プローブの起動時に DTrace arg0..9 変数に割り当てられる引数です。アプリケーションソースコード内で同じプロバイダ名やプローブ名を繰り返し参照できます。ソースコード内で同じプローブが何回も参照されている場合、そのいずれかがプローブを起動することになります。