jstack,为Java进程、核心文件、远程调试服务器打印Java线程栈跟踪。
命令行语法格式(SYNOPSIS)
jstack [ options ] pid
jstack [ options ] executable core
jstack [ options ] [ server-id@ ] remote-hostname-or-IP
options
命令行选项,查看Options章节。
pid
要打印的栈跟踪的进程ID。该进程必须是Java进程ID。使用jps(1)命令Java进程的列表。
executable
生成核心转储的Java可执行文件。
core
要打印栈跟踪的「核心文件」。
remote-hostname-or-IP
远程Debug Server的IP或者主机名。参阅jsadebugd(1)。
server-id
当同一个主机上运行了多个Debug Server的时候,可以使用server-id来指定。
命令简述(DESCRIPTION)
对于指定的Java进程、核心文件、远程调试服务器,jstack命令打印它们的Java线程的Java栈跟踪。对于每个Java帧,打印完整的类名、方法名称、字节码索引(BCI)、行号。
使用-m选项时,jstack命令使用程序计数器(PC)打印所有线程的Java和本机帧。对于每个本机帧,打印最接近PC的本机符号(如果可用)。C++被破坏的名称没有被清除。要清除C++名称,该命令的输出可以被管道传输到c++filt。当指定的进程在64位Java虚拟机上运行时,可能需要指定-J-d64选项,例如:jstack -J-d64 -m pid。
注意:jstack不受支持,在将来的JDK版本中可能会移除。在不存在dbgeng.dll文件的Windows系统中,必须安装适用于Windows的调试工具,以便这些工具起作用。PATH环境变量需要包含目标进程使用的jvm.dll的位置或生成崩溃转储文件的位置。例如:
命令支持的选项及含义(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)
对于远程的Debug Server,-m选项无效。
相关文档(SEE ALSO)
· pstack(1)
· C++filt(1)
· jps(1)
· jsadebugd(1)
参考文献
- http://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstack.html#BABGJDIF
- man 1 jstack, version OpenJDK Runtime Environment (build 1.8.0_141-8u141-b15-3-b15)