stdinを介してコマンドを受け取るLinuxアプリケーションをデバッグしようとしていますが、stdinに記録されているすべてのものを見ることができれば非常に便利です。
私の最初のアプローチはを実行することでしたが、私のプロセスとプロセスは両方ともそのファイル記述子の内容を消費しようとしましたが、1つのプロセスだけが競争に勝つことができたsudo cat /proc/$pid/fd/0
ため、これは非効率的なアプローチであることが証明されました。cat
別の方法はtailを使用することですが、次の理由で機能しません。ここ。
アプリケーションにデバッグログを簡単に追加すると、問題が解決します。しかし、私が見逃したより一般的なアプローチがあるかどうかを知りたいです。
ベストアンサー1
strace
?
以下の例stdinを読み込み、/tmp/foofileに書き込むcatプロセスを起動します。 pidを見つけて追跡します。元の猫ウィンドウにHey、Come onというテキストを入力します。
# cat >/tmp/foofile
# ps -ef|grep cat
steve 2134 1801 0 22:25 pts/2 00:00:00 cat
# strace -fp 2134
Process 2134 attached
read(0, "test\n", 65536) = 5
write(1, "test\n", 5) = 5
read(0,
ファイル記述子0から読むには:
strace -fp 2134 -e trace=read -o "|grep read.0,"