この項では、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