ltraceをstraceしたらptrace(2)の存在を知りました。
ptrace() システムコールは、親プロセスが、別のプロセスの実行の監視/制御を 行ったり、コアイメージ (core image) やレジスタの調査/変更を 行ったりする手段を提供する。 ptrace() は、主にブレークポイントによるデバッグやシステムコールのトレースを 実装するのに用いられる。 トレースを開始するには、まず親プロセスで fork(2) を呼び出す。生成された子プロセスで PTRACE_TRACEME を行い、続いて (典型的には) exec(3) を行なう。 別の方法としては、 親プロセスが既存のプロセスに対して PTRACE_ATTACH を使用し、トレースを開始する。
manを読んでも雰囲気しかよくわからなかったです。ptraceを上手いことを使うことでstraceとかltraceは実装されているんだなと知りました。
後はftraceとかもあった記憶がある。ftraceはユーザスペースからはdebugfs通じてなんかするみたいなツールだった記憶があるけどどういうタイミングで使っていくのかはいまいちよくわかっていない...