C Shell Wiki
Posts (Latest 10 updated) :
Read all
Contents:
  1. [Linux] C Shell (csh) strace の使い方: プログラムのシステムコールを追跡する
    1. 概要
    2. 使用法
    3. 一般的なオプション
    4. 一般的な例
      1. 例1: プログラムの実行を追跡する
      2. 例2: 出力をファイルに保存する
      3. 例3: 特定のシステムコールを追跡する
      4. 例4: 実行中のプロセスを追跡する
      5. 例5: 統計情報を表示する
    5. ヒント

[Linux] C Shell (csh) strace の使い方: プログラムのシステムコールを追跡する

概要

strace コマンドは、プログラムが実行中に行うシステムコールや信号を追跡するためのツールです。デバッグやトラブルシューティングに役立ち、プログラムの挙動を詳細に分析することができます。

使用法

基本的な構文は以下の通りです。

strace [options] [arguments]

一般的なオプション

  • -e trace=<set>: 特定のシステムコールを追跡します。
  • -o <file>: 出力を指定したファイルに保存します。
  • -p <pid>: 指定したプロセスIDのプロセスを追跡します。
  • -c: 各システムコールの統計情報を表示します。

一般的な例

以下に、strace コマンドの実用的な例をいくつか示します。

例1: プログラムの実行を追跡する

strace ls

このコマンドは、ls コマンドが実行するシステムコールを表示します。

例2: 出力をファイルに保存する

strace -o output.txt ls

ls コマンドのシステムコールの出力を output.txt というファイルに保存します。

例3: 特定のシステムコールを追跡する

strace -e trace=open,close ls

このコマンドは、ls コマンドが openclose のシステムコールを使用する様子を追跡します。

例4: 実行中のプロセスを追跡する

strace -p 1234

プロセスIDが 1234 のプロセスのシステムコールを追跡します。

例5: 統計情報を表示する

strace -c ls

ls コマンドの実行後に、各システムコールの統計情報を表示します。

ヒント

  • strace の出力は非常に詳細であるため、必要な情報を見つけるために grep コマンドを併用すると便利です。
  • デバッグ中にプログラムの挙動を理解するために、-e trace=all オプションを使用してすべてのシステムコールを追跡することができます。
  • プロセスが多くのシステムコールを行う場合、出力が膨大になることがあるため、特定の関心のあるシステムコールに絞ることをお勧めします。