2013-06-24 68 views
0

假设我使用java命令运行了一个java程序,是否有可能在程序运行时获取该程序的当前位置或堆栈跟踪,如果我有源代码那个节目?不停止我的程序的解决方案是首选。在运行java程序时获取当前堆栈跟踪

回答

2

jps找到进程ID。 jstack来转储堆栈。

如果它正在运行命令行,ctrl-Z/ctrl-break(取决于平台)也可以完成这项工作。

+0

整洁!奇迹般有效!谢谢 !! – keelar

+0

顺便说一句,看起来像ctrl-Z不适用于我的平台(红帽linux 4.1.2-51),它似乎只是把我的程序放入后台,我发现在ctrl-Z下,我甚至不能使用jstack窥探它。 – keelar

+0

呃,'ctrl-3'我认为是另一种选择,但可能也是这样吗?通常'ctrl-z'会暂停(用'bg'恢复)。可能与信号处理有所不同。 –

2

将调试器附加到JVM并暂停JVM。调试器然后可以显示堆栈跟踪。

+0

谢谢,但我更喜欢解决方案而不是停止我的程序。 – keelar

相关问题