如何在AIX機器上查看正在運行的進程的所有線程的堆棧和狀態。 命令或工具,如的pstack在Linux上也應該幫助..如何查看aix上正在運行的進程的所有線程堆棧?
我試圖procstack,但沒有幫助。它沒有顯示任何堆棧給我。並沒有錯誤雖然..
任何想法..?
是procstack需要所有可執行文件和庫與用debig info編譯的進程相關嗎?
謝謝。
如何在AIX機器上查看正在運行的進程的所有線程的堆棧和狀態。 命令或工具,如的pstack在Linux上也應該幫助..如何查看aix上正在運行的進程的所有線程堆棧?
我試圖procstack,但沒有幫助。它沒有顯示任何堆棧給我。並沒有錯誤雖然..
任何想法..?
是procstack需要所有可執行文件和庫與用debig info編譯的進程相關嗎?
謝謝。
以下是我用dbx編寫的腳本來打印給定進程ID的所有線程的堆棧。希望這會有所幫助,就像aix上的魅力一樣工作
if [ $# -ne 1 ]
then
echo "Usage dbxstack <processid>";
exit;
fi
rm -rf printthreads.fordbx
echo "thread" >> printthreads.fordbx
echo "detach" >> printthreads.fordbx
echo "quit" >> printthreads.fordbx
dbx -a $1 -c printthreads.fordbx > threads.tempdbx 2>/dev/null
awk '$1 ~ /\$t/ { print $1 }' threads.tempdbx | sed s/\$t//g | sed s/\>//g > threadsids.tempdbx
rm -rf printthreads.fordbx
for i in `cat threadsids.tempdbx`
do
echo "print \"------------------------\"" >> printthreads.fordbx
echo "thread current $i" >> printthreads.fordbx
echo "where" >> printthreads.fordbx
echo "print \"---------tid $i---------\"" >> printthreads.fordbx
i=$(($i+1));
echo $i;
done
echo "detach" >> printthreads.fordbx
echo "quit" >> printthreads.fordbx
dbx -a $1 -c printthreads.fordbx > $1.stacktrace 2> $1.stacktracerr
rm -rf threads.tempdbx threadsids.tempdbx printthreads.fordbx
非常有趣。如果我回到AIX環境,我將使用它。你可以顯着減少代碼,但是這看起來很穩定。即'awk'$ 1〜/ \ $ t/{gsub(/ \ $ t /,「」,$ 1; gsub(/ \> /,「」,$ 1; print $ 1}'threads.tempdbx |> threadsids.tempdbx'。其他簡化是可能的。祝大家好運。 – shellter
你是如何使用procstack的?輸出是什麼? – Raam
procstack PID或procstack -F PID 輸出是沒有什麼..沒有錯誤信息..剛剛到下一行... – sandeep