{category}

Linux - デバッグツール

strace

エストレース(システムモニタリングとトラブルシューティング

意味 システムコールの追跡


straceとは?

straceは、プログラムが行うシステムコールとシグナルを追跡するLinuxのデバッグツールです。プログラムの動作を詳細に分析し、問題の原因を特定するのに役立ちます。

straceの具体的な使い方

基本的なシステムコール追跡

$ strace ls

👇出力結果

execve("/usr/bin/ls", ["ls"], 0x7ffd5e7e5cd0 /* 24 vars */) = 0
brk(NULL)                               = 0x55cf3b5e8000
arch_prctl(ARCH_SET_FS, 0x55cf3b5e7540) = 0
set_tid_address(0x55cf3b5e7810)         = 4589
set_robust_list(0x55cf3b5e7820, 24)     = 0
rseq(0x55cf3b5e7ee0, 0x20, 0, 0x53053053) = 0
...

この例では、'ls'コマンドが実行される際のすべてのシステムコールを表示します。これにより、'ls'コマンドがどのようにファイルシステムと相互作用しているかを詳細に見ることができます。

特定のシステムコールの追跡

$ strace -e open,close ls

👇出力結果

open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
close(3)                                = 0
open("/lib/x86_64-linux-gnu/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
close(3)                                = 0
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
close(3)                                = 0
...

この例では、'ls'コマンドの実行中に発生する'open'と'close'システムコールのみを追跡します。これにより、ファイルの開閉操作に焦点を当てて解析できます。

システムコールの統計情報の取得

$ strace -c ls

👇出力結果

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 25.00    0.000025          25         1           execve
 16.00    0.000016           5         3           brk
 14.00    0.000014           7         2           openat
 13.00    0.000013          13         1           mprotect
...

この例では、'ls'コマンドの実行中に発生したシステムコールの統計情報を表示します。各システムコールの呼び出し回数、処理時間、エラー数などが表示され、パフォーマンス分析に役立ちます。

straceに関するよくある質問

Q. straceの主な用途は?
A. straceの主な用途は、プログラムが実行中に行うシステムコールを追跡し、デバッグや性能分析を行うことです。これにより、プログラムがオペレーティングシステムとどのように相互作用しているかを詳細に把握できます。
Q. straceの出力は読みにくいですが?
A. straceの出力は確かに初見では読みにくいかもしれません。慣れが必要ですが、-e オプションを使って特定のシステムコールのみを表示したり、-o オプションで出力をファイルに保存して後で解析したりすることで、より扱いやすくなります。
Q. straceはパフォーマンスに影響する?
A. はい、straceを使用するとプログラムの実行速度が遅くなることがあります。これは、各システムコールをトレースする overhead があるためです。本番環境での使用は避け、デバッグや分析目的で使用することをお勧めします。

straceが学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、Linuxのstraceやuptime、vmstat、dstat、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


Linuxを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!Linuxはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

uptime

システムの稼働時間を表示

種類: システム情報表示

vmstat

仮想メモリ統計を表示

種類: パフォーマンス監視

dstat

システムリソース統計

種類: パフォーマンス監視

gcc

Cコンパイラ

種類: コンパイラ

patch

ファイル更新コマンド

種類: テキスト操作