2

AIXマシンで実行中のプロセスのすべてのスレッドのスタックと状態を表示する方法。Linux上のpstackのようなコマンドまたはツールも役立つはずです。

procstackを試しましたが、役に立ちませんでした。スタックは表示されません。エラーはありません。

何か案は..?

procstackには、debig infoでコンパイルされたプロセスに関連付けられたすべての実行可能ファイルとライブラリが必要ですか?

ありがとう。

4

1 に答える 1

5

これは、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
于 2012-05-28T16:54:31.713 に答える