pstack
コマンドは、Solarisや他のUNIX系オペレーティングシステム上で実行中のプロセスやコアダンプファイルのスタックトレースを表示するためのツールです。pstack
を使うことで、指定したプロセスやコアファイルに関する各スレッドのコールスタックを確認できます。
出力の解説
-
core 'core_file' of 1234: myapp
pstack
が解析しているコアダンプファイルと、そのダンプが取られたプロセスID(ここでは1234
)、およびプロセス名(myapp
)を表示しています。 -
lwp#
とthread#
それぞれのスレッドのLight Weight Process (LWP)番号と、スレッド番号が表示されます。LWPは、SolarisのスレッドのOSレベルでの実装です。 -
コールスタック
各スレッド(LWP)のスタックトレースが表示されます。各スタックフレームは以下の情報で構成されています:-
アドレス:
各スタックフレームのメモリアドレスが表示されます。 -
関数名と引数:
スレッドが呼び出している関数と、渡されている引数が表示されます。例えば、lwp_park
やcond_wait
などのシステムコールやユーザー定義の関数がリストアップされています。 -
ユーザー定義関数(アプリケーションコード):
スタックの最下部に、アプリケーションコードで呼ばれた関数(例:myapp_func1
,myapp_func2
,myapp_func3
)が表示されます。ここが通常、バグの発生源となる場所です。
-
pstack
は、シンプルかつ強力なツールで、Solarisや他のUNIX系システムでクラッシュしたアプリケーションやプロセスのスタックトレースを解析するために使用されます。
Pstackの利点
簡単にプロセスやコアダンプのスタックトレースを取得できるため、デバッグやクラッシュ解析に非常に有効。
追加のオプション設定が不要で、簡潔なスタックトレース出力を得られる。