ktrace(2) FreeBSD 一般コマンドマニュアル

ktrace

前のページ 上に戻る 次のページ

ktrace




書式

     #include <sys/param.h>
     #include <sys/time.h>
     #include <sys/uio.h>
     #include <sys/ktrace.h>

     int
     ktrace(const char *tracefile, int ops, int trpoints, int pid);


解説

     ktrace() 関数は、1 つまたは複数のプロセスのトレースを有効または無効にしま
     す。ユーザは自分のプロセスだけをトレースできます。スーパーユーザだけ
     が、setuid プログラムまたは setgid プログラムをトレースできます。

     tracefile は、トレースに使用するファイルのパス名を指定します。ファイルは
     存在していなければならず、呼び出し側プロセスによって書き込み可能な通常
     ファイルである必要があります。トレースレコードはすべてファイルの末尾に追
     加されるので、直前のトレースデータを切り捨てるためにはファイルの長さを 0
     にする必要があります。トレース点が無効な場合 (後述の KTROP_CLEAR を参
     照)、 tracefile は NULL にできます。

     ops パラメータは要求された ktrace 操作を指定します。定義されている操作は
     次のとおりです。

           KTROP_SET              trpoints で指定されたトレース点を有効にしま
                                 す。
           KTROP_CLEAR            trpoints で指定されたトレース点を無効にしま
                                 す。
           KTROP_CLEARFILE       すべてのトレースを停止します。
           KTRFLAG_DESCEND       トレースの変更が、指定のプロセスとその現在の
                                 すべての子プロセスに適用されます。

     trpoints パラメータは関心のあるトレース点を指定します。定義されているトレ
     ース点は次のとおりです。

           KTRFAC_SYSCALL       システムコールをトレースします。
           KTRFAC_SYSRET        システムコールからの戻り値をトレースします。
           KTRFAC_NAMEI         パス名の探索操作をトレースします。
           KTRFAC_GENIO         すべての入出力をトレースします (このオプション
                                が大量の出力を生成する可能性があることに注意し
                                てください)。
           KTRFAC_PSIG          ポストされたシグナルをトレースします。
           KTRFAC_CSW           コンテキストスイッチをトレースします。
           KTRFAC_INHERIT       これ以降の子にトレースを継承します。

     各トレースイベントは、汎用のヘッダの後にトレース点に固有の構成要素が続く
     形式のレコードをを出力します。汎用のヘッダは次のとおりです。

     struct ktr_header {
             int     ktr_len;                /* バッファの長さ */
             short   ktr_type;               /* トレースレコードのタイプ */

     す。


戻り値

     関数 ktrace() は、処理が成功すると値 0 を返します。そうでない場合、値 -1
     が返され、グローバル変数 errno が設定されてエラーを示します。


エラー

     ktrace() は次の場合に失敗します。

     [ENOTDIR]          パスの構成要素中にディレクトリ以外のものが含まれていま
                        す。

     [ENAMETOOLONG]     パス名の構成要素が 255 文字を越えているか、またはパス
                        名全体が 1023 文字を越えています。

     [ENOENT]           指定のトレースファイルが存在しません。

     [EACCES]           前置パス名の構成要素について検索許可が拒否されていま
                        す。

     [ELOOP]            パス名を変換するときに検出されたシンボリックリンクが多
                        すぎます。

     [EIO]              ファイルシステムに読み書きしている間に入出力エラーが発
                        生しました。

     [ENOSYS]           カーネルが ktrace サポートとともにコンパイルされていま
                        せん。


関連項目

     kdump(1), ktrace(1)


歴史

     ktrace() 関数は 4.4BSD ではじめて登場しました。

FreeBSD 4.4                      June 4, 1993                      FreeBSD 4.4

ABELNET VPSサービス