日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
KTRACE(2) FreeBSD システムコールマニュアル KTRACE(2)
名称
ktrace -- プロセスのトレース
ライブラリ
標準 C ライブラリ (libc, -lc)
書式
#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 は、空にされます。
ops 引数は、要求された ktrace 操作を指定します。定義された操作は、次の通
りです:
KTROP_SET trpoints で指定されたトレースポイントを有効に
します。
KTROP_CLEAR trpoints で指定されたトレースポイントを無効に
します。
KTROP_CLEARFILE すべてのトレースを停止します。
KTRFLAG_DESCEND トレースの変更は、指定されたプロセスとその現
在のすべての子プロセスに適用するべきです。
trpoints 引数は、関心のあるトレースポイントを指定します。定義されたトレー
スポイントは、次の通りです:
KTRFAC_SYSCALL システムコールをトレースします.
KTRFAC_SYSRET システムコールからの返り値をトレースします.
KTRFAC_NAMEI 名前の検索操作をトレースします.
KTRFAC_GENIO すべての I/O をトレースします (このオプション
は, 多くの出力を生成することに注意してくださ
い).
KTRFAC_PSIG 投稿されたシグナルをトレースします.
KTRFAC_CSW コンテキストスイッチの時点をトレースします.
KTRFAC_USER アプリケーション特有のイベントをトレースしま
す.
KTRFAC_STRUCT 特定のデータ構造をトレースします.
KTRFAC_SYSCTL sysctl をトレースします.
KTRFAC_PROCCTOR プロセス構築をトレースします.
KTRFAC_PROCDTOR プロセス破壊をトレースします.
KTRFAC_CAPFAIL ケーパビリティ機能をトレースします.
KTRFAC_FAULT ページフィルトをトレースします.
KTRFAC_FAULTEND ページフィルトの終りをトレースします.
KTRFAC_STRUCT_ARRAY 特定のデータ構造体の配列をトレースします.
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; /* タイムスタンプ */
intptr_t ktr_tid; /* was ktr_buffer */
};
ktr_len フィールドは、このヘッダに続いている ktr_type データの長さを指定
します。ktr_pid と ktr_comm フィールドは、レコードを生成するプロセスとコ
マンドを指定します。ktr_time フィールドは、レコードが生成された時間 (マイ
クロ秒の精度で) を与えます。ktr_tid フィールドは、スレッド ID を保持して
います。
一般的なヘッダには、ktr_type レコードの ktr_len バイトが続きます。タイプ
特有レコードは、<sys/ktrace.h> インクルードファイルで定義されています。
SYSCTL 調整変数
次の sysctl(8) 調整変数は、ktrace() の振る舞いに影響します:
kern.ktrace.geniosize
トレースされた I/O 要求がトレースファイルにログ記録するデータ量の
制限。
kern.ktrace.request_pool
一度にログ記録されるトレースイベントの数の制限。
また、制御プロセスのデバッグ可能性 (p_candebug(9) によって決定されるよう
な) は、ktrace() の操作にも影響する sysctl 調整変数。
戻り値
関数 ktrace() は、処理が成功すると値 0 を返します。そうでない場合、値 -1
が返され、グローバル変数 errno にエラーを示す値が設定されます。
エラー
ktrace() システムコールは、次の場合に失敗します:
[ENOTDIR] パス接頭辞の構成要素が、ディレクトリではありません。
[ENAMETOOLONG] パス名の構成要素が 255 文字を越えているか、または、全
体のパス名が 1023 文字を越えています。
[ENOENT] 指定された tracefile が、存在しません。
[EACCES] 検索パーミッションが、パス接頭辞の構成要素のために拒否
されています。
[ELOOP] パス名の変換で、あまりにも多くのシンボリックリンクに遭
遇しました。
[EIO] I/O エラーが、ファイルシステムから読み込むか、または書
き込む間に起こりました。
[EINTEGRITY] 破損したデータが、ファイルシステムから読み込む間に検出
されました。
[ENOSYS] カーネルが、ktrace サポートでコンパイルされませんでし
た。
スレッドは、リソースの一時的な不足のために、1 つ以上のトレースのイベント
をログ記録することができないかもしれません。この条件は、カーネルによって
記憶され、成功する次のトレース要求は、その ktr_type フィールドに設定され
たフラグ KTR_DROP があります。
関連項目
kdump(1), ktrace(1), utrace(2), sysctl(8), p_candebug(9)
歴史
ktrace() システムコールは、4.4BSD ではじめて登場しました。
FreeBSD 13.2 November 2, 2022 FreeBSD 13.2