web-dev-qa-db-ja.com

straceはすでに実行中のプロセスにどのように接続しますか?

straceptraceを使用して仕事をすることを知っていますが、

ただし、TRACE_MEをオンにしてターゲットプロセスを実行する必要があります。

既に実行中のプロセスの場合には適用されません。

既に実行中のプロセスでどのように機能しますか?

29
new_perl

ptrace()の詳細はOS固有です。

Linuxでは、子はptrace(PTRACE_TRACEME, ...);を使用して親によるトレースを要求できます。ただし、代わりに、プロセスはptrace(PTRACE_ATTACH, ...)を使用して別のプロセスに自分自身をアタッチできます。

Linux ptrace(2)のmanページ を参照してください(そして、本当に詳細が必要な場合は、 strace source と、カーネルソースの開始で kernel/ptrace.c )。

13