3.4 USDTプローブの使用

この項では、3.3項、「アプリケーションへのUSDTプローブの追加」で作成されたUSDTプローブの一般的な使用方法について説明します。

次の出力に示すように、アプリケーションはプローブで実行されていないため、最初はプローブは表示されません:

# dtrace -l -P 'prime*'
  ID   PROVIDER            MODULE                          FUNCTION NAME
dtrace: failed to match prime*:::: No probe matches description

アプリケーションを起動しますが、プローブを表示するまで値は入力しないでください:

# ./prime 
Enter a positive target integer to test for prime status:
 

別のコマンドラインから、プローブ・リストを発行します:

# dtrace -l -P 'prime*'
   ID      PROVIDER            MODULE                          FUNCTION NAME
 2475 primeget26556             prime                              main query-factorreturnA
 2476 primeget26556             prime                              main query-factorreturnB
 2477 primeget26556             prime                              main query-final
 2478 primeget26556             prime                              main query-maxcheckval
 2479 primeget26556             prime                              main query-userentry
 
注意

プロバイダ名は、dprime.dファイルに定義されたprovider primegetと、実行中のアプリケーションprimeのPIDの組合せです。 次のコマンドの出力では、素数のPIDが表示されます:

# ps aux | grep prime
root 26556 0.0 0.0 7404 1692 pts/0 S+ 21:50 0:00 ./prime

root以外のユーザーに対してUSDTスクリプトを実行できるようにするには、ヘルパー・デバイスに適切な権限が必要です。 または、rootユーザーとしてプローブを含むプログラムを実行できます。 DTraceヘルパー・デバイスのモード変更の詳細は、3.1.1項、「例: DTrace Helperデバイスのモードの変更」を参照してください。

これらのパーミッションを取得する1つの方法は、次のコマンドを実行して構成を変更し、rootユーザー以外のユーザーがプローブ・プロバイダ情報をDTraceに送信できるようにすることです:

# setfacl -m u:guest:rw /dev/dtrace/helper

プローブがリストされるまでアプリケーションを再起動しますが、値は入力しないでください:

# ./prime 
Enter a positive target integer to test for prime status: 

別のコマンドラインから、プローブ・リストを発行します:

# dtrace -l -P 'prime*'
   ID     PROVIDER            MODULE                    FUNCTION NAME
 2456 primeget2069             prime                        main query-factorreturnA
 2457 primeget2069             prime                        main query-factorreturnB
 2458 primeget2069             prime                        main query-final
 2459 primeget2069             prime                        main query-maxcheckval
 2460 primeget2069             prime                        main query-userentry