KTRACE

Section: System Calls (2)
索引 jman

BSD mandoc
 

索引

名称

ktrace - プロセスのトレース  

索引

ライブラリ

Lb libc  

索引

書式

In sys/param.h In sys/time.h In sys/uio.h In sys/ktrace.h Ft int Fn ktrace const char *tracefile int ops int trpoints int pid  

索引

解説

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

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

Fa ops 引数は要求された ktrace 操作を指定します。 定義されている操作は次のとおりです:

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

Fa trpoints 引数は関心のあるトレース点を指定します。 定義されているトレース点は次のとおりです:

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

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

struct ktr_header {
        int     ktr_len;                /* バッファの長さ */
        short   ktr_type;               /* トレースレコードのタイプ */
        pid_t   ktr_pid;                /* プロセス ID */
        char    ktr_comm[MAXCOMLEN+1];  /* コマンド名 */
        struct  timeval ktr_time;       /* タイムスタンプ */
        caddr_t ktr_buf;
};

ktr_len フィールドはこのヘッダに続く ktr_type データの長さを示します。 ktr_pid フィールドと ktr_comm フィールドは、レコードを生成したプロセスとコマンドを示します。 ktr_time フィールドは、 レコードが生成された時刻を (マイクロ秒単位で) 示します。 ktr_buf は、内部カーネルポインタであって有用ではありません。

汎用ヘッダには ktr_len バイトの長さの ktr_type レコードが続きます。 タイプに固有のレコードは In sys/ktrace.h インクルードファイル内で定義されています。  

索引

SYSCTL チューナブル

次の sysctl(8) チューナブルが Fn ktrace の動作に影響します:

kern.ktrace.geniosize
トレースされた I/O 要求がトレースファイルに記録するデータ量を制限します。
kern.ktrace.request_pool
一度に記録するトレースイベント数を制限します。

プロセスをデバッグできるかを制御する sysctl チューナブル (p_candebug9 によって決められている) もまた Fn ktrace の操作に影響します。  

索引

戻り値

Rv -std ktrace  

索引

エラー

Fn ktrace システムコールは次の場合に失敗します:

Bq Er ENOTDIR
パスの構成要素中にディレクトリ以外のものが含まれています。
Bq Er ENAMETOOLONG
パス名の構成要素が 255 文字を越えているか、 またはパス名全体が 1023 文字を越えています。
Bq Er ENOENT
指定のトレースファイルが存在しません。
Bq Er EACCES
前置パス名の構成要素について検索許可が拒否されています。
Bq Er ELOOP
パス名を変換するときに検出されたシンボリックリンクが多すぎます。
Bq Er EIO
ファイルシステムに読み書きしている間に入出力エラーが発生しました。
Bq Er ENOSYS
カーネルが サポートとともにコンパイルされていません。

一時的な資源不足のために、 スレッドが 1 個以上のトレースイベントを記録できないことがあり得ます。 この状態はカーネルによって記憶され、次に成功するトレース要求において ktr_type フィールドの KTR_DROP フラグがセットされます。  

索引

関連項目

kdump(1), ktrace(1), utrace(2), sysctl(8), p_candebug9  

索引

歴史

Fn ktrace システムコールは BSD 4.4 ではじめて登場しました。


 

索引

Index

名称
ライブラリ
書式
解説
SYSCTL チューナブル
戻り値
エラー
関連項目
歴史

jman



Time: 07:06:28 GMT, January 12, 2009