jstack

  • Post author:
  • Post category:其他


打印 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)