Linux
如何知道程序卡在linux中的哪個位置?
我在我的 ubuntu 伺服器上執行以下命令
root@slot13:~# lxc-stop --name pavan --logfile=test1.txt --logpriority=trace
它似乎無限期地掛起。每當在 AIX 上發生這種情況時,我只是用來獲取違規程序的 PID 並說
$ procstack <pid_of_stuck_process>
它用於顯示程序的整個呼叫堆棧。
procstack
在 linux/ubuntu 中是否有任何等價物?
我的第一步是在程序上執行 strace,最好
strace -s 99 -ffp 12345
如果您的程序 ID 是 12345。這將顯示程序正在執行的所有系統呼叫。如何 strace 程序會告訴您更多資訊。
如果你堅持要獲取堆棧跟踪,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)