「jstack」

  LINUX MANUAL PAGES

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的位置或生成崩溃转储文件的位置。例如:

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)

对于远程的Debug Server,-m选项无效。

相关文档(SEE ALSO)

· pstack(1)
· C++filt(1)
· jps(1)
· jsadebugd(1)

参考文献