機械翻訳について

プローブのリストと有効化

DTraceプロバイダは、DTraceに使用可能なプローブを公開することで、プローブの起動時に関数を実行できるようにします。 dtraceコマンドは、使用可能なすべてのプローブのリスト表示や、プローブの有効化に使用できます。

  1. 使用可能なプローブをリスト表示します。

    使用可能なすべてのプローブをリストするには、次を実行します:

    sudo dtrace -l

    ノート:

    DTraceのほとんどの使用には、root権限が必要です。 このドキュメントでは、コマンドは適切な権限で実行することを前提としています。 このドキュメントに示したコマンドの実行前に、sudoコマンドを使用してrootユーザー権限に昇格します。

    コマンドは以下のような出力を返します。

    DTrace 2.0.0 [Pre-Release with limited functionality]
        ID   PROVIDER            MODULE                          FUNCTION NAME
         1     dtrace                                                     BEGIN
         2     dtrace                                                     END
         3     dtrace                                                     ERROR
         4        fbt           vmlinux        __traceiter_initcall_level entry
         5        fbt           vmlinux        __traceiter_initcall_level return
         6        fbt           vmlinux        __traceiter_initcall_start entry
         7        fbt           vmlinux        __traceiter_initcall_start return
         8        fbt           vmlinux       __traceiter_initcall_finish entry
         9        fbt           vmlinux       __traceiter_initcall_finish return
    ...
    144917        sdt               rtc                                   rtc_set_time
    144918        sdt               i2c                                   i2c_result
    144919        sdt               i2c                                   i2c_reply
    144920        sdt               i2c                                   i2c_read
    144921        sdt               i2c                                   i2c_write
    144922        sdt             smbus                                   smbus_result
    144923        sdt             smbus                                   smbus_reply
    144924        sdt             smbus                                   smbus_read
    144925        sdt             smbus                                   smbus_write
    144926        sdt             hwmon                                   hwmon_attr_show_string
    144927        sdt             hwmon                                   hwmon_attr_store
    144928        sdt             hwmon                                   hwmon_attr_show
    144929        sdt           thermal                                   thermal_zone_trip
    144930        sdt           thermal                                   cdev_update
    144931        sdt           thermal                                   thermal_temperature
    144932        sdt            bcache    
    ...
    145763    syscall           vmlinux                            listen entry
    145764    syscall           vmlinux                              bind return
    145765    syscall           vmlinux                              bind entry
    145766    syscall           vmlinux                        socketpair return
    145767    syscall           vmlinux                        socketpair entry
    145768    syscall           vmlinux                            socket return
    145769    syscall           vmlinux                            socket entry

    ヒント:

    DTraceで使用可能なプロバイダ固有のリストを取得するには、次を実行します:
    sudo dtrace -l|tail -n +3|awk '{print $2}'|uniq
    -Pオプションは、プローブのリストを特定のプロバイダに限定するために使用できます。 -mオプションを使用して、特定のモジュールに限定することもできます。 次に例を示します:
    sudo dtrace -l -P sdt
    sudo dtrace -l -m thermal
  2. コマンドライン・ユーティリティを使用して指定のプローブを有効にするには、dtrace -nを実行します。
    名前に一致するプローブを有効にできます。 プローブの完全名の名前部分のみを指定することもできますが、完全名を使用することで予期しない動作を回避できます。
    sudo dtrace -n dtrace:::BEGIN

    次のような出力が表示されます。

    dtrace: description 'dtrace:::BEGIN' matched 1 probe
    CPU     ID                    FUNCTION:NAME
      2      1                           :BEGIN
    dtrace:::BEGINプローブは、新しいトレース・リクエストを開始するたびに1回起動します。 表形式の出力に、プローブが起動したCPUと、プローブのID、関数、および名前が表示されます。

    DTraceの実行は継続され、別のプローブが起動するのを待機します。 終了するには、Ctrl + Cを押します。

  3. リクエスト内で複数のプローブを連鎖させることで、複数のプローブを有効にします。

    DTraceリクエストは、任意の数のプローブと関数を使用して作成できます。 たとえば、BEGINプローブとENDプローブを追加して、2つのプローブを使用したリクエストを作成します。

    BEGINプローブの出力行が表示されたら、次のコマンドを入力し、シェルでCtrl + Cを再度押します:

    sudo dtrace -n dtrace:::BEGIN -n dtrace:::END 

    出力は次のようになります:

    dtrace: description 'dtrace:::BEGIN' matched 1 probe
    dtrace: description 'dtrace:::END' matched 1 probe
    CPU     ID                    FUNCTION:NAME
      0      1                           :BEGIN 
    ^C
      1      2                             :END

    dtrace:::BEGINプローブは、トレース・リクエストの開始時に起動します。 DTraceは、Ctrl + Cを押して終了するまで、さらにプローブがアクティブ化されるまで待機します。 dtrace:::ENDプローブは、トレースが完了すると1回アクティブ化されます。 dtraceコマンドは、このプローブの起動を終了前に報告します。

  4. ある関数のすべてのプローブを有効にするには-fオプションを使用し、あるモジュールのすべてのプローブを有効にするには-mオプションを使用します。

    関数またはモジュール全体のプローブを一致させて有効にできます。 たとえば、syscall:vmlinux:socket関数のentryプローブとreturnプローブの両方を有効にするには、次を実行します:

    sudo dtrace -f syscall:vmlinux:socket

    モジュール全体のプローブを有効にすることもできます。 たとえば、sdt:tcpモジュールのすべてのプローブを有効にするには、次を実行します:

    sudo dtrace -m sdt:tcp