打印 Java 进程、核心文件或远程调试服务器的 Java 线程堆栈跟踪。此命令是实验性的,不受支持。
概要
jstack
[ options ] pid
jstack
[ options ] executable core
jstack
[ options ] [ server-id@ ] remote-hostname-or-IP
options
命令行选项。请参阅Options。
PID
为其打印堆栈跟踪的进程 ID。该进程必须是 Java 进程。要获取机器上运行的 Java 进程的列表,请使用jps(1)命令。
executable
生成核心转储的 Java 可执行文件。
core
要为其打印堆栈跟踪的核心文件。
remote-hostname-or-IP
远程调试服务器hostname或IP地址。见jsadebugd(1)。
server-id
当多个调试服务器在同一远程主机上运行时使用的可选唯一 ID。
Description
该jstack命令打印指定 Java 进程、核心文件或远程调试服务器的 Java 线程的 Java 堆栈跟踪。对于每个 Java 框架,将打印完整的类名、方法名、字节码索引 (BCI) 和行号(如果可用)。使用该-m选项,该jstack命令使用程序计数器 (PC) 打印所有线程的 Java 和本机帧。对于每个本机帧,打印最接近 PC 的本机符号(如果可用)。C++ 重整名称不会被重整。要对 C++ 名称进行解码,此命令的输出可以通过管道传输到c++filt. 当指定的进程在 64 位 Java 虚拟机上运行时,您可能需要指定该-J-d64选项,例如:
jstack -J-d64 -m pid
.
注意:此实用程序不受支持,并且可能在 JDK 的未来版本中不可用。在不存在 dbgeng.dll 文件的 Windows 系统中,必须安装 Windows 调试工具才能使这些工具正常工作。环境变量需要包含目标进程使用的 jvm.dll的PATH位置,或生成故障转储文件的位置。例如:
set PATH=<jdk>\jre\bin\client;%PATH%
Options
-F
jstack当[ -l]pid没有响应时强制进行堆栈转储。
-l
长列表。打印有关锁的其他信息,例如拥有的可拥有java.util.concurrent同步器的列表。请参阅AbstractOwnableSynchronizer课程说明
http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/AbstractOwnableSynchronizer.html
-m
打印包含 Java 和本机 C/C++ 帧的混合模式堆栈跟踪。
-h
打印帮助消息。
-help
打印帮助消息。
Known Bugs
在混合模式堆栈跟踪中,该-m选项不适用于远程调试服务器。
See Also
- pstack(1)
- C++filt(1)
- jps(1)
- jsadebugd(1)