1.4.2.1 例: プロバイダに対するプローブの表示

次の例は、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:createproc::_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項、「例: プロバイダのプローブの表示」に示す出力と同様のプローブ・リストが表示されます。