strace コマンド

目的

STREAMS トレース・メッセージを出力します。

構文

strace [ mid sid level ] ... 

説明

strace コマンドは、パラメーターを指定しないと、すべてのドライバーおよびモジュールからの STREAMS イベント・トレース・メッセージをその標準出力に書き出します。 これらのメッセージは、STREAMS ログ・ドライバーから取得します。 パラメーターを指定する場合、トリプレットでなければなりません。 トリプレットはそれぞれ、トレースしているメッセージがそこから受け取ることになる指定モジュールまたはドライバー、サブ ID (通常マイナー・デバイスを示す)、および指定レベル以下の優先順位を示します。 メンバーは、その属性に対して制限事項がないことを示すために all トークンを使用できます。

パラメーター

項目 説明
mid STREAMS モジュール ID 番号を指定します。
sid サブ ID 番号を指定します。
level トレース優先順位を指定します。

出力フォーマット

各トレース・メッセージ出力のフォーマットは以下のとおりです。

<seq> <time> <ticks> <level> <flags> <mid> <sid> <text>
項目 説明
<seq> トレース・シーケンス番号。
<time> hh:mm:ss 形式のメッセージの時刻。
<ticks> システムが始動してからのマシン・ティックで表したメッセージの時刻。
<level> トレースの優先順位。
<flags> 以下のうちのいずれか 1 つの値です。
E
メッセージも同様にエラー・ログにあります。
F
致命的エラーを示します。
N
メールをシステム管理者に送信しました。
<mid> ソースのモジュール ID 番号。
<sid> ソースのサブ ID 番号。
<text> トレース・メッセージのフォーマットされたテキスト。

マルチプロセッサー・システム上では <text> は以下の 2 つの部分からなります。

  • メッセージの所有者が送信したプロセッサーの番号。
  • フォーマットされたテキスト自体。

strace コマンドは、いったん開始すると、ユーザーが終了するまで継続して実行されます。

注: 稼働効率の点から、STREAMS ログ・ドライバーをオープンできるのは、一度に 1 つの strace コマンドだけです。ログ・ドライバーは、コマンドの呼び出し時に指定されたトリプレットのリストを持っていて、このリストと考えられる各トレース・メッセージを比較して、このリストをフォーマットして strace プロセスに送信するべきかどうかを決定します。 このため、トリプレットのリストが長いと、STREAMS の稼働効率全体にさらに大きな影響を与えます。 strace コマンドの実行は、モジュールやドライバーが strace プロセスの送られるトレース・メッセージを生成するタイミングに最も大きな影響を与えます。 strace プロセスが処理できる速度より速くトレース・メッセージが生成されると、そのメッセージのいくつかは失われてしまいます。 この最後のケースでは、トレース・メッセージ出力のシーケンス番号を調べることによって判別できます。

  1. モジュール ID が 41 のモジュールまたはドライバーからのトレース・メッセージをすべて出力するには、以下のように入力します。
    
    strace 41 all all
  2. モジュール ID が 41 でサブ ID が 01、または 2 のいずれかのモジュールまたはドライバーからのトレース・メッセージを出力するには、以下のように入力します。
    strace 41 0 1 41 1 1 41 2 0
    サブ ID 0 および 1 からのメッセージは、トレース・レベルが 1 以下でなければなりません。サブ ID 2 からのメッセージは、トレース・レベルが 0 でなければなりません。