jstack(1) トラブルシューティング・ツール jstack(1)

名前

jstack - Javaプロセス、コア・ファイルまたはリモート・デバッグ・サーバーに対するJavaスレッドのスタック・トレースを出力します。このコマンドは試験的なもので、サポートされていません。

概要

jstack [ options ] pid 
jstack [ options ] executable core
jstack [ options ] [ server-id@ ] remote-hostname-or-IP

options

コマンド行オプション。オプションを参照してください。

pid

出力するスタック・トレースのプロセスIDです。プロセスはJavaプロセスである必要があります。マシン上で実行しているJavaプロセスの一覧を取得するには、jps(1)コマンドを使用します。

実行可能ファイル

コア・ダンプの作成元のJava実行可能ファイル。

コア

出力するスタック・トレースのコア・ファイルです。

remote-hostname-or-IP

リモート・デバッグ・サーバーのホスト名またはIPアドレス。jsadebugd(1)を参照してください。

server-id

複数のデバッグ・サーバーが同一のリモート・ホストで実行している場合の、オプション固有のID。

説明

jstackコマンドは、指定されたJavaプロセス、コア・ファイルまたはリモート・デバッグ・サーバーに対するJavaスレッドのJavaスタック・トレースを出力します。Javaフレームごとに、フルクラス名、メソッド名、バイトコード・インデックス(bci)、および行番号(利用可能な場合)が出力されます。-mオプションを使用すると、jstackコマンドは、すべてのスレッドのJavaフレームとネイティブ・フレームの両方を、プログラム・カウンタ(PC)とともに出力します。ネイティブ・フレームごとに、PCに最も近いネイティブ・シンボル(利用可能な場合)が出力されます。C++分解名は分解解除されません。C++名を分解解除するには、このコマンドの出力をc++filtにパイプします。指定されたプロセスが64ビットJava仮想マシン上で実行されている場合は、-J-d64オプションを指定する必要があります(例: jstack -J-d64 -m pid)。

注意 このユーティリティはサポート対象外であり、将来のJDKのリリースでは利用できなくなる可能性があります。dbgeng.dllファイルが存在していないWindowsシステムでは、Debugging Tools For Windowsをインストールしないとこれらのツールが正常に動作しません。また、PATH環境変数には、ターゲット・プロセスによって使用されるjvm.dllの場所、またはクラッシュ・ダンプ・ファイルが生成された場所が含まれるようにしてください。次に例を示します。

set PATH=<jdk>\jre\bin\client;%PATH%

オプション

-F

jstack [-l] pidが応答しない場合にスタック・ダンプを強制します。

-l

長形式のリスト。所有java.util.concurrentの所有できるシンクロナイザの一覧など、ロックについての追加情報を印刷します。http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/AbstractOwnableSynchronizer.htmlにある AbstractOwnableSynchronizerクラス記述を参照してください

-m

JavaおよびネイティブC/C++フレームの両方を持つ混合モードのスタック・トレースを出力します。

-h

ヘルプ・メッセージが出力されます。

-help

ヘルプ・メッセージが出力されます。

既知のBUG

混合モードのスタック・トレースでは、-mオプションはリモート・デバッグ・サーバーでは機能しません。

関連項目

•pstack(1)
•C++filt(1)
•jps(1)
•jsadebugd(1)
2013年11月21日 JDK 8