【发布时间】:2011-02-22 14:59:53
【问题描述】:
如何从 Java 程序中获取远程 VM 中运行的已知线程的堆栈跟踪?
远程 JVM 是否需要使用任何特殊开关运行?
【问题讨论】:
-
它在同一个盒子上 - 所以不是那么远程,而是不同的 jvm。
标签: java stack-trace remote-debugging
如何从 Java 程序中获取远程 VM 中运行的已知线程的堆栈跟踪?
远程 JVM 是否需要使用任何特殊开关运行?
【问题讨论】:
标签: java stack-trace remote-debugging
您真的需要在 Java 中以编程方式执行此操作(我猜是因为您的问题如此明确)?
不管怎样,如果没有,那么在 Linux 上你可以在命令行上执行此操作:
kill -3 <pid>
编辑:对于编程访问,在启用 JMX 的情况下启动应用程序,通过 JMX 连接到它并使用 ThreadMXBean.getThreadInfo 获取每个正在运行的线程的堆栈跟踪。
如果您在同一台机器上有多个 JVM,每个都需要自己不同的 JMX 端口,您可以通过反复尝试从池中随机选择一个并注销结果来处理此问题。
请参阅here,了解有关创建自定义 JMX 客户端的分步信息。
【讨论】: