GNU/Linux >> Linux の 問題 >  >> Ubuntu

11Linuxでの例を使用したStraceコマンド

Straceは非常に強力なデバッグコマンドラインユーティリティツールであり、特定のプログラムのシステムコールとシグナルを監視することで問題のトラブルシューティングに役立ちます。利用可能なソースコードがない場合は、straceを使用してプログラムがシステムとどのように相互作用するかを分析できます。この記事では、Linuxでプログラムとプロセスをトラブルシューティングおよびデバッグするためのいくつかの重要なstraceコマンドについて説明します。

インストール

straceユーティリティツールのインストールは、簡単で簡単なプロセスです。次のコマンドを使用して、Linuxディストリビューションに従ってアプリケーションをインストールします。

Debian / Ubuntu

$ sudo apt install strace

RedHat / CentOS

$ yum install strace

次のコマンドを実行して、インストールを確認します

$ strace -V

出力:

1.straceを使用してLinuxコマンドシステムコールをトレースする

Straceは、Linuxコマンドシステムコールをトレースするときに役立ちます。この例では、単純なコマンド pwd トレースに使用されます。

$ strace pwd

出力:

2。ファイル内のトレースログをリダイレクトする

システムコールのトレースログは、次のようにstraceコマンドを使用してファイルにリダイレクトできます。

$ strace -o pwd-log.txt pwd

catコマンドを使用して、ファイルの内容を次のように検索します。

$ cat pwd-log.txt

3。通常の出力ではなく、straceを使用してシステムコールの概要を出力します。

オプション-cを指定してstraceを使用すると、ログの要約を印刷できます。この例では、Linuxコマンドpwdの要約が表示されます。

$ strace -c pwd

出力:

4。 straceを使用して特定のシステムコールをトレースする

オプション-eおよびトレースタイプ(読み取り、書き込み)を指定したStraceコマンドを使用して、特定のシステムコールをトレースできます。この例では、writeシステムコールがコマンドpwdに対してトレースされています。

$ strace -e trace=write pwd

出力:

5。各システムコールのタイムスタンプを出力するStraceコマンド。

オプション-rを指定したStraceコマンドを使用して、各システムコールのすべての相対タイムスタンプを出力できます。

$ strace -r pwd

出力:

6。プロセスIDを使用したトレース

システムですでに実行中のプロセスがある場合は、オプション-pとプロセスIDを指定してstraceコマンドを使用することにより、システムコールをトレースできます。この例では、nginxのプロセスIDがトレースに使用されています

構文

$ strace -p <process id>
$ strace -p 12842

Ctrl+Cを押すとトレースを停止できます。

7。デバッグ出力を出力するStraceコマンド

オプション-dを指定したStraceコマンドを使用して、デバッグ出力を出力できます。この例では、単純なLinuxコマンドpwdがトレースに使用されています。

$ strace -d pwd

出力:

8。システムコールに費やされた時間を出力するStraceコマンド。

オプション-Tを指定したStraceコマンドは、システムコールに費やされた時間を次のように示します。

$ strace -T pwd

出力:

9。命令ポインタを出力するStraceコマンド

オプション-iを指定したStraceコマンドは、命令ポインターを出力します。この例では、単純なLinuxコマンドpwdがトレースに使用されています。

$ strace -i pwd

出力:

10。特定の条件に基づいてシステムコールをトレースするStraceコマンド

Straceコマンドを使用して、メモリ、プロセス、CPUなどの特定の条件に基づいてシステムコールをトレースできます。この例では、メモリ管理に関連するシステムコールが、単純なLinuxコマンドpwdに対してトレースされています。

$ strace -q -e memory pwd

出力:

11。信号関連のシステムコールをトレースするStraceコマンド

コマンドでトレースタイプを定義することにより、信号関連のシステムコールをトレースできます。この例では、 nc -v -n localhost 80 信号に関連するシステムコールをトレースするために使用されます。

$ strace -e trace=signal nc -v -n 127.0.0.1 80

出力:

結論

この記事では、straceユーティリティツールとは何か、いつ使用できるかを学びました。また、システムコールとプロセスのトラブルシューティングとデバッグを行うための重要なstraceコマンドについても説明しました。


Ubuntu
  1. 例を含むLinuxPingコマンドチュートリアル

  2. 例を含むLinuxTeeコマンド

  3. LinuxでのJQコマンドと例

  1. 例を含むLinuxソースコマンド

  2. Linuxでのdpkgコマンドと例

  3. 例を含むwcLinuxコマンド

  1. Linuxのソートコマンドと例

  2. Linuxでのエコーコマンド(例付き)

  3. Linuxでのmanコマンドと例