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に関するよくある質問
straceが学べる書籍の紹介
「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、Linuxのstraceやuptime、vmstat、dstat、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。
よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。
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」カテゴリーが追加されましました!