この記事では、LinuxStraceコマンドの使用方法を学習します。 Straceは、LinuxOSでプログラムをデバッグおよびトラブルシューティングするための強力なコマンドラインツールです。プロセスによって行われたすべてのシステムコールと、プロセスによって受信されたシグナルをキャプチャして記録します。
各システムコールの名前が、括弧で囲まれた引数と標準エラーへの戻り値とともに表示されます。オプションで、ファイルにリダイレクトすることもできます。
通常、straceがシステムに存在しない場合は、次のコマンドを使用してstraceをインストールします。
dnf install strace
次の例のように、straceを使用してコマンドを実行するか、-pオプションを使用してコマンドにPIDを渡すことができます。
Linuxコマンドシステムコールのトレース:
この例では、コマンド「df -h」の後にstraceを実行して、df-hコマンドのシステムコールを追跡します。
strace df -h
出力は次のようになります:
上記の出力から、df -hコマンドによって行われたさまざまなタイプのシステムコールを確認できます。たとえば、「open( "/ etc / ld.so.cache"、O_RDONLY | O_CLOEXEC)=3 "
どこで、
- open –システムコールのタイプです
- (“ /etc/ld.so.cache”、O_RDONLY | O_CLOEXEC)–システムコール引数
- 3 –システムコールの戻り値
トレースLinuxプロセスPID:
プロセスがすでに実行されている場合は、そのPIDをstraceに渡すだけでトレースできます。これにより、プロセスによって行われているシステムコールを示す継続出力が画面に表示されます。終了するには、CTRL+Cを押します。
strace -p 7302
システムコールの合計時間、呼び出し、およびエラーの要約を取得するには、以下に示すようにフラグ-cを使用します。
strace -pc 7583
システムコール中の命令ポインタの印刷:
-iフラグは、プログラムによる各システムコールの時点での命令ポインタを表示します。
strace -i df -h
各トレース出力行の表示時間:
-tフラグを渡すことにより、トレース出力の各行の現在の時刻を出力することもできます。
strace -t df -h
システムコールに費やされた印刷コマンド時間:
プログラムによる各システムコールの開始と終了の時間差を表示するには、-Tオプションを使用します。
strace -T df -h
特定のシステムコールのみをトレースする:
以下のコマンドでは、trace =writeは修飾式として知られています。ここで、「trace」は修飾子(signal、abbrev、verbose、raw、read、またはwriteを含む)であり、「write」は修飾子の値です。
次のコマンドは、実際にdf-h出力を標準出力に出力するシステムコールを示しています。
strace -e trace=write df -h
トレース修飾子に関するいくつかの追加コマンドは次のとおりです。
strace -e trace=open,close df -h
strace -e trace=open,close,read,write df -h
strace -e trace=all df -h
特定の条件に基づいてシステムコールを追跡する:
特定のクラスのイベントに関連するシステムコールを追跡する方法を見ていきます。次のコマンドを使用して、プロセス管理に関連するすべてのシステムコールを追跡できます。
strace -q -e trace=process df -h
次に、ファイル名を引数として取るすべてのシステムコールをトレースするには、次のコマンドを使用します。
strace -q -e trace=file df -h
同様に、次のコマンドを使用して、すべてのネットワーク、メモリ、および信号に関連するシステムコールをトレースできます。
strace -q -e trace=memory df -h
strace -e trace=network df -h
strace -e trace=signal df -h
トレース出力をファイルにリダイレクトする:
標準エラーに送信されたトレースメッセージをファイルに書き込むには、-oオプションを使用します。これは、以下に示すように、コマンド出力のみが画面に出力されることを意味します。
strace -o strace_message.txt df -h
すべてのシステムコールはファイルstrace_message.txtに書き込まれました。 catコマンドを使用して、システムコールを確認します。
cat strace_message.txt
Straceのデバッグ出力を表示する:
straceツールのデバッグ情報を表示するには、-dフラグを使用します。
strace -d df -h
結論として、straceはプログラム障害の原因を診断するためのツールです。これは、デバッグとトラブルシューティングのための強力なツールです。経験豊富なシステム管理者、プログラマー、ハッカーにとっては実用的です。