KTRACE(1)

名称
ktrace - カーネルプロセスのトレースを行う

書式
ktrace [-aCcdi] [-f trfile] [-g pgrp] [-p pid] [-t trstr] ktrace [-adi] [-f trfile] [-t trstr] command

解説
ktrace は、指定したプロセスのカーネルトレースのログを とります。カーネルトレース情報はファイル ktrace.out に記録されます。 システムコール、namei 変換、シグナル処理、 I/O などのカーネル動作がトレースされます。

いったんプロセスのトレースを行うようにすると、トレースデータは プロセスが終了するか、トレースポイントがクリアされるまでログをとり続けます。 トレースしたプロセスは膨大な量のログを急速に作るため、ユーザはプロセスの トレースを行う前にトレースを取り消す方法を絶対に覚えておくべきです。 ユーザの持つ、すべてのプロセスのカーネルトレースを取り消すには、 以下のコマンドで十分です。root のときは、すべてのプロセスに対して行われます。

    $ ktrace -C

トレースファイルはそのままでは読めませんので、 kdump(1) を利用してください。

オプションとしては、以下のものがあります:

-a  トレースファイルを切り詰めずに追加します。

-C  ユーザの持つ、すべてのプロセスのカーネルトレースをオフにします。 root が実行した場合はシステムのすべてのプロセスのトレースがオフになります。

-c  指定したプロセスやファイルに対するトレースポイントをクリアします。

-d  指定したプロセスの現在の子プロセスすべてに対して操作を行います。

-f file
    トレース記録を ktrace.out のかわりに file に記録します。

-g pgid
    プロセスグループ内の全てのプロセスのトレースをオン (オフ) にします。

-i  指定したプロセスの未来の子プロセスすべてに対し、トレースフラグを継承させます。

-p pid
    指定したプロセス ID のトレースを行います (取り消します) 。

-t trstr
    この文字列引数は、カーネルトレースの場所を文字 1 つ ずつで表現します。以下の表は、文字とトレースの場所の対応関係を表しています:

    c   システムコールのトレース
    n   namei 変換のトレース
    i   I/O のトレース
    s   シグナル処理のトレース

command
    指定したトレースフラグで command を実行します。

-p, -g, command は相互に排他的です。同時に利用することはできません。

使用例
# PID 34 のプロセスすべてのカーネル動作のトレースを行います。
    $ ktrace -p 34

# プロセスグループ ID 15 のすべてのプロセスのカーネル動作のトレースを行 い、現在および未来の子プロセスすべてにトレースフラグを渡します。
    $ ktrace -idg 15

# PID 65 のプロセスのすべてのトレースを取り消します。
    $ ktrace -cp 65

# PID 70 のプロセスとそのすべての子プロセスの、シグナルに関するトレースを 取り消します。
    $ ktrace -t s -cdp 70

# PID 67 のプロセスの I/O に関するトレースを有効にします。
    $ ktrace -ti -p 67

# コマンド ``w'' を実行し、システムコールのみのトレースを行います。
    $ ktrace -tc w

# ``tracedata'' ファイルに対するすべてのトレースを取り消します。
    $ ktrace -c -f tracedata

# ユーザが所有者であるすべてのプロセスのトレースを取り消します。
    $ ktrace -C

関連項目
kdump(1)

歴史
ktrace コマンドは 4.4BSD から登場しました。