.\" Copyright (c) 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)ktrace.1 8.1 (Berkeley) 6/6/93 .\" %FreeBSD: src/usr.bin/ktrace/ktrace.1,v 1.16 2002/04/20 12:15:02 charnier Exp % .\" .\" $FreeBSD$ .\" .Dd June 6, 1993 .Dt KTRACE 1 .Os .Sh 名称 .Nm ktrace .Nd カーネルプロセスのトレースを行う .Sh 書式 .Nm .Op Fl aCcdi .Op Fl f Ar trfile .Op Fl g Ar pgrp | Fl p Ar pid .Op Fl t Ar trstr .Nm .Op Fl adi .Op Fl f Ar trfile .Op Fl t Ar trstr .Ar command .Sh 解説 .Nm ユーティリティは、指定したプロセスのカーネルのトレースログを とります。カーネルトレース情報はファイル .Pa ktrace.out に記録されます。 トレースされるカーネル動作には、 システムコール、namei 変換、シグナル処理、 .Tn I/O 処理が含まれます。 .Pp いったんプロセスのトレースを行うようにすると、トレースデータは プロセスが終了するか、トレースポイントがクリアされるまで記録され続けます。 トレースしたプロセスは膨大な量のログを急速に作るため、ユーザはプロセスの トレースを行う前にトレースを取り消す方法を覚えておくことを強くお勧めします。 ユーザが実行している全てのプロセスのトレース動作を取り消すには、 以下のコマンドで十分です。このコマンドが root 権限で実行された場合には、 全てのプロセスに対してトレースの取消しが行われます。 .Pp .Dl \&$ ktrace -C .Pp トレースファイルはそのままでは読めませんので、 .Xr kdump 1 を使って解析してください。 .Pp オプションとしては、以下のものがあります。 .Bl -tag -width indent .It Fl a 既存のトレースファイルを再構築しないで、後ろに追加していきます。 .It Fl C ユーザが実行している全てのプロセスのトレース動作をオフにします。 root が実行した場合はシステムのすべてのプロセスのトレースがオフになります。 .It Fl c 指定したファイルやプロセスに対するトレースポイントをクリアします。 .It Fl d 指定したプロセスの現在の子プロセスすべてに対してトレースを行います。 .It Fl f Ar trfile トレース記録を .Pa ktrace.out のかわりに .Ar trfile に記録します。 .It Fl g Ar pgid プロセスグループ内の全てのプロセスのトレースをオン (オフ) にします( .Fl g フラグは 1 つしか指定できません)。 .It Fl i 指定したプロセスが今後生成するすべての子プロセスに対し、トレースフラグを 継承させます。 .It Fl p Ar pid 指定したプロセス ID のトレースを行います (または 取り消します) ( .Fl p フラグは 1 つしか指定できません)。 .It Fl t Ar trstr この文字列引数は、カーネルトレースポイントの 1 つを 1 文字で表現しています。 以下の表は、文字とトレースポイントの対応関係を表しています。 .Pp .Bl -tag -width flag -compact .It Cm c システムコールのトレース .It Cm n namei 変換のトレース .It Cm i .Tn I/O のトレース .It Cm s シグナル処理のトレース .It Cm u ユーザでのトレース .It Cm w コンテキストスイッチ .It Cm + トレースポイントのデフォルト集合、すなわち .Cm c , n , i , s , u をトレースします。 .El .It Ar command 指定したトレースフラグで .Ar command を実行します。 .El .Pp .Fl p , .Fl g , .Ar command は相互に排他的です。同時に利用することはできません。 .Sh 使用例 # プロセス ID 34 のプロセスすべてのカーネル動作のトレースを行います。 .Dl $ ktrace -p 34 .Pp # プロセスグループ ID 15 のすべてのプロセスのカーネル動作のトレースを行い、 現在および未来の子プロセスすべてにトレースフラグを渡します。 .Dl $ ktrace -idg 15 .Pp # プロセス ID 65 のプロセスのすべてのトレースを取り消します。 .Dl $ ktrace -cp 65 .Pp # プロセス ID 70 のプロセスとそのすべての子プロセスの、シグナルに関する トレースを取り消します。 .Dl $ ktrace -t s -cdp 70 .Pp # プロセス ID 67 のプロセスの .Tn I/O に関するトレースを有効にします。 .Dl $ ktrace -ti -p 67 .Pp # コマンド "w" を実行し、システムコールのみのトレースを行います。 .Dl $ ktrace -tc w .Pp # "tracedata" ファイルに対するすべてのトレースを取り消します。 .Dl $ ktrace -c -f tracedata .Pp # ユーザが所有しているすべてのプロセスのトレースを取り消します。 .Dl $ ktrace -C .Sh 関連項目 .Xr kdump 1 .Sh バグ .Ar trfile が普通のファイルの場合だけ働きます。 .Sh 歴史 .Nm コマンドは .Bx 4.4 から実装されました。