是否有Linux命令来打印正在运行的Java进程的当前堆栈

是否有Linux命令来打印正在运行的Java进程的当前堆栈,java,linux,debugging,stack-trace,Java,Linux,Debugging,Stack Trace,情况: 我有一个Java1.7进程在CentOS6中运行,有多个线程。进程当前停止(即陷入某种循环或等待功能)。由于程序的复杂性,很难在例如Eclipse中进行例行调试(在下面的背景部分有更多解释)。因此,我希望通过跟踪当前运行的堆栈来调试代码 问题: 是否有一个Linux命令允许我打印堆栈以识别当前正在运行的线程/方法,以便我可以找到导致暂停的方法 背景: 无法在Eclipse中调试的原因: 它是一个MapReduce程序,通常在多台计算机上运行 即使我在一台计算机上使用run,它仍然需要同时

情况:

我有一个Java1.7进程在CentOS6中运行,有多个线程。进程当前停止(即陷入某种循环或等待功能)。由于程序的复杂性,很难在例如Eclipse中进行例行调试(在下面的背景部分有更多解释)。因此,我希望通过跟踪当前运行的堆栈来调试代码

问题:

是否有一个Linux命令允许我打印堆栈以识别当前正在运行的线程/方法,以便我可以找到导致暂停的方法

背景:

无法在Eclipse中调试的原因:

  • 它是一个MapReduce程序,通常在多台计算机上运行
  • 即使我在一台计算机上使用run,它仍然需要同时运行多个线程
  • 最重要的是,“停止的错误”是随机发生的(即无法复制)。因此,我最好的办法是确定导致错误的当前运行方法
  • p.S.我的方法可能是完全错误的,所以请随时纠正我并为我指出正确的方向

    感谢您的帮助。您可以使用获取当前线程转储。它应该为您提供当前正在运行的线程及其堆栈跟踪

    它甚至会为你做得更多——如果出现任何僵局,它会告诉你

    除此之外,您还可以使用实时监视应用程序(您可以在那里实时检查线程并从中获取线程转储)。

    您可以使用获取当前线程转储。它应该为您提供当前正在运行的线程及其堆栈跟踪

    它甚至会为你做得更多——如果出现任何僵局,它会告诉你

    除此之外,您还可以使用实时监视应用程序(您可以在那里实时检查线程并从中获取线程转储)。

    来自:

    以下是在Unix上生成Java线程转储的方法:

    1) 注意Java进程的进程ID号(例如,使用top、a grep on ps-axw等),并使用 kill-QUIT或kill-3命令。例如:

    kill-3java_-PID

    发件人:

    以下是在Unix上生成Java线程转储的方法:

    1) 注意Java进程的进程ID号(例如,使用top、a grep on ps-axw等),并使用 kill-QUIT或kill-3命令。例如:

    kill-3java_-PID


    那真的很有帮助。竖起大拇指,这真的很有帮助。竖起大拇指。