ダイナミックライブラリの呼び出しをトレースできる便利な ltrace ですが、 ltrace -p
変な挙動
[vagrant@vagrant-centos65 ~]$ sudo ltrace -p 2800 Cannot attach to pid 2800: No such file or directory
Cannot attach to pid と出ていますが、プロセスの STATUS は T になっています。あと ENOENT のエラーメッセージも出ています。さらにシグナルがブロックされていて Ctrl-C だと止められませんでした
ltrace を strace する
ENOENT の部分が気になったので ltrace の strace を取ると下記で ENOENT を返しているのが分かりました
open("/root/.ltrace.conf", O_RDONLY) = -1 ENOENT (No such file or directory)
ほいじゃ sudo touch /root/.ltrace.conf するとどうなるかなと実行したら
[vagrant@vagrant-centos65 ~]$ sudo touch /root/.ltrace.conf [vagrant@vagrant-centos65 ~]$ sudo ltrace -p 2950 Cannot attach to pid 2950: Success
Cannnot で Success! 何を言っているんだお前は感。どうにもプロセスにアタッチする周りと errno の扱いがおかしいようですね
ltrace の man
-p pid としか説明が無いのでスレッドをトレースしようとするのがそもそも間違いなんでしょうかね
-p pid Attach to the process with the process ID pid and begin tracing.
なんだかよくわからないまんまです。時間ができたらバグレポートを探してみます