我确实有一个 jenkins 实例,它卡在某种无限循环中,没有任何可见的活动。
我可以获得pid
正在运行的进程,那么如何生成可用于错误报告的跟踪?
我在linux上运行。
我确实有一个 jenkins 实例,它卡在某种无限循环中,没有任何可见的活动。
我可以获得pid
正在运行的进程,那么如何生成可用于错误报告的跟踪?
我在linux上运行。
尝试使用jstack。它会为您提供线程正在做什么的完整列表。它所需要的只是进程 pid。
进行线程转储。通过 Visual VM 连接并请求转储。或者,如果在 unix 上,那么kill -3 pid或在进程控制台上的 windows Ctrl+Break将为您完成。转储直接进入控制台。您还可以使用 jstack 来进行转储。
在 *nix 中,top
通过按下H
可以看到线程。
然后jps
你可以看到pid
记住,如果进程是用特权启动的,那么你必须用sudo
例如执行它。
如果您获取线程 ID 并将其转换为十六进制,那么您可以将该数据与jstack pid
输出交叉。
这两个工具都在$JAVA_HOME/bin
.
Ctrl+\
在 linux 上(发送SIGQUIT
)
Ctrl+Break
在 Windows 上(SIGBREAK
在 MSVCRT 下发送)
看看VisualVM。它有很多不错的分析工具,您可以执行线程转储。