私はstrace
実行中のプロセスが欲しくてそれでそれを行うことができることを知っていますが、strace -p <pid>
プロセスがsem_wait()
公開されていないセマフォなどのいくつかのブロック呼び出しにかかっていて、出力はstrace
1行だけです。例えば:
Process 195 attached - interrupt to quit
poll([{fd=3, events=POLLIN}, {fd=6, events=POLLIN}], 2, 3600000^C <unfinished ...>
strace
より多くのコンテキスト/書き込み行を出力するように指定できますか?ライブ出力と各機能/コマンドを推測しているのでそうではないようですがstrace
確認を要請しなければならないと思いました。
答え1
gdb
たとえば、 Attach to process を使用して現在のスタックを表示することもできます。これは、特にデバッグシンボルを使用してプログラムをコンパイルした場合に、より多くの情報を取得するのに役立ちます。
たとえば、sleep
バックグラウンドで実行し、その pid をインポートし、pid ファイルとターゲットファイルで gdb を実行し、bt
逆追跡コマンドを実行します。プログラムを続行するには、と入力しますdetach
。
$ sleep 999 &
[1] 17340
$ gdb -p 17340 /bin/sleep
Reading symbols from /bin/sleep...(no debugging symbols found)...done.
Attaching to program: /usr/bin/sleep, process 17340
Missing separate debuginfos, use: dnf debuginfo-install coreutils-8.24-8.fc23.x86_64
(gdb) bt
#0 0x00007fb84f43d510 in __nanosleep_nocancel () from /lib64/libc.so.6
#1 0x0000562be81da29f in rpl_nanosleep ()
#2 0x0000562be81da100 in xnanosleep ()
#3 0x0000562be81d7a1d in main ()
(gdb) detach
Detaching from program: /usr/bin/sleep, process 17340
(gdb) quit
答え2
あなたは正しいです、歴史はありません。
明確でない場合、出力はプロセスが呼び出し中であり、poll
ファイル記述子 3 と 6 の入力を待っていることを示します。実行すると、ls -l /proc/195/fd
これらの記述子が何に接続されているかを表示する必要があります。