strace
はptrace
を使用して仕事をすることを知っていますが、
ただし、TRACE_ME
をオンにしてターゲットプロセスを実行する必要があります。
既に実行中のプロセスの場合には適用されません。
既に実行中のプロセスでどのように機能しますか?
ptrace()
の詳細はOS固有です。
Linuxでは、子はptrace(PTRACE_TRACEME, ...)
;を使用して親によるトレースを要求できます。ただし、代わりに、プロセスはptrace(PTRACE_ATTACH, ...)
を使用して別のプロセスに自分自身をアタッチできます。
Linux ptrace(2)
のmanページ を参照してください(そして、本当に詳細が必要な場合は、 strace
source と、カーネルソースの開始で kernel/ptrace.c
)。