strace と ptrace システムコール

strace って ptrace システムコールを使ってて、割込み(例外)も使ってるって書いてたなと思って調べてみた。

Linuxカーネル2.6解読室

Linuxカーネル2.6解読室

P. 107

Linux には、プロセスの動作を観察できるシステムコール、ptrace が備わっています。ptraceを簡単に利用できるコマンドとしてstraceがある


詳解 Linuxカーネル 第3版

詳解 Linuxカーネル 第3版

P.148

1 デバッグ例外(Debug)
トラップまたはフォルト。eflagsレジスタのTFフラグを設定すると発生します(デバッガでのステップ実行の際に非常に有用です)。また、有効化したデバッグレジスタのアドレス範囲にある命令を実行したり、オペランドへアクセスしたときも、デバッグ例外が発生します

P.882

Intel 80x86ベースのマシンでは、この種の追跡はeflagsレジスタ中のTFトラップフラグを用いて実装します。TFトップフラグが立っている場合、各アセンブリ言語命令の直後に「デバッグ」例外が発生します。デバッグ例外用のハンドラは、TFトラップフラグを落とし、カレントプロセスを停止し、SIGHLDシグナルを親プロセスに送るだけです。