次の例は、dtrace コマンドを使用して、proc
などのプロバイダのプローブを表示する方法を示しています。
# dtrace -l -P proc
ID PROVIDER MODULE FUNCTION NAME
855 proc vmlinux _do_fork lwp-create
856 proc vmlinux _do_fork create
883 proc vmlinux do_exit lwp-exit
884 proc vmlinux do_exit exit
931 proc vmlinux do_sigtimedwait signal-clear
932 proc vmlinux __send_signal signal-send
933 proc vmlinux __send_signal signal-discard
941 proc vmlinux send_sigqueue signal-send
944 proc vmlinux get_signal signal-handle
1044 proc vmlinux schedule_tail start
1045 proc vmlinux schedule_tail lwp-start
1866 proc vmlinux do_execveat_common exec-failure
1868 proc vmlinux do_execveat_common exec
1870 proc vmlinux do_execveat_common exec-success
出力には、プローブの数値識別子、プローブ・プロバイダの名前、プローブ・モジュール名、プローブが含まれている関数の名前、およびプローブ自体の名前が表示されます。
プローブのフルネームは、
です。例: PROVIDER
:MODULE
:FUNCTION
:NAME
proc:vmlinux:_do_fork:create
。 同じプロバイダの他のプローブで曖昧さがない場合は、通常、プローブを指定するときに
要素とMODULE
要素を省略できます。 たとえば、FUNCTION
proc:vmlinux:_do_fork:create
をproc::_do_fork:create
またはproc:::create
として参照できます。 Dプログラムに指定したプローブと複数のプローブが一致する場合は、各プローブに関連付けられているアクションが実行されます。
これらのプローブを使用すると、プロセスの作成、プログラムの実行およびシグナルの処理の方法を監視できます。
以前に選択したsdt
モジュールがロードされていない場合は、再度チェックして、dtraceコマンドによってモジュールがロードされたかどうかを確認します。
dtrace -l -P proc コマンドを実行した後に次のメッセージが表示された場合(前述の例の出力と同様の出力が出力されます)、モジュールがロードされていないことを示して:
No probe matches description
sdt
モジュールがDTraceが適切にインストールされたシステムに自動的にロードされない場合は、modprobe コマンドを使用して別のDTraceモジュールが手動でロードされたためです。 このようにしてDTraceモジュールを手動でロードすると、システムが再起動されるまで、他のモジュールがdtraceコマンドによって自動的にロードされなくなります。 この場合、modprod コマンドを使用してsdt
モジュールを手動でロードすることが回避策となります。 モジュールが正常にロードされると、dtrace コマンドを再発行したときに、第1.4.2.1項、「例: プロバイダのプローブの表示」に示す出力と同様のプローブ・リストが表示されます。