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 チューナブル
-
- 戻り値
-
- エラー
-
- 関連項目
-
- 歴史
-
Time: 07:06:28 GMT, January 12, 2009