Linuxでプログラムが停止する場所をどうやって知ることができますか?

Linuxでプログラムが停止する場所をどうやって知ることができますか?

私のUbuntuサーバーで次のコマンドを実行しています

root@slot13:~# lxc-stop --name pavan --logfile=test1.txt --logpriority=trace

無期限にぶら下がっているようです。 AIXでこれが起こるたびに、私は問題のプロセスのPIDを取得し、次のように言います。

$ procstack <pid_of_stuck_process>

プロセスのフルコールスタックを表示するために使用されます。procstackLinux/ubuntuにも似ていますか?

ベストアンサー1

最初のステップは、プロセスでstraceを実行することです。なるべく

 strace -s 99 -ffp 12345

プロセスIDが12345の場合。これにより、プログラムが実行されているすべてのシステムコールが表示されます。進捗状況を追跡する方法もっと教えてください。

スタックトレースが必要な場合、Googleはpstackに対応するものを教えてくれます。しかし、私はインストールしていないので、gdbを使用します。

 tweedleburg:~ # sleep 3600 &
 [2] 2621
 tweedleburg:~ # gdb
 (gdb) attach 2621
 (gdb) bt
 #0  0x00007feda374e6b0 in __nanosleep_nocancel () from /lib64/libc.so.6
 #1  0x0000000000403ee7 in ?? ()
 #2  0x0000000000403d70 in ?? ()
 #3  0x000000000040185d in ?? ()
 #4  0x00007feda36b8b05 in __libc_start_main () from /lib64/libc.so.6
 #5  0x0000000000401969 in ?? ()
 (gdb)

おすすめ記事