straceとは?
えすとれーす
straceはLinuxでプロセスが発行するシステムコールをリアルタイムに追跡・表示するデバッグツールです。
straceはLinux上で動作するコマンドラインのデバッグツールで、指定したプロセスがカーネルに対して発行するシステムコール(syscall)とシグナルをリアルタイムに記録・表示します。開発者やシステム管理者がプログラムの挙動を深く調査する際に利用します。
内部ではLinuxカーネルのptraceメカニズムを使ってプロセスにアタッチし、システムコールの入口と出口でそれぞれ実行を一時停止して引数・戻り値・エラーコードを収集します。この仕組みによりソースコードがなくてもバイナリの動作を観察できます。
ファイルのオープン(open/openat)・ネットワーク通信(connect/recv/send)・プロセス生成(fork/execve)・メモリ操作(mmap/brk)など、OSとのやり取りをすべて可視化できます。たとえばアプリがどのファイルを読もうとしているか、どこでエラーになっているかを素早く特定できます。主なオプションとして、-e trace=で追跡するsyscallを絞り込む、-oでファイルに出力する、-pで実行中プロセスにアタッチするといった使い方があります。
ptraceを利用するため対象プロセスの速度が低下する点や、コンテナ環境でのケーパビリティ制限に注意が必要ですが、動作不明なバイナリの解析やパフォーマンスのボトルネック調査において欠かせないツールです。
使い方・例文
起動に失敗するプログラムをstrace ./appで実行すると、どのファイルをオープンしようとして「No such file or directory」になっているかを即座に確認できます。
この用語をシェア
最終更新: