Ответ 1
Попробуйте jstack. Он даст вам полный список тем, что ваши потоки делают. Все, что ему нужно, это процесс pid.
У меня есть экземпляр jenkins, который застрял в каком-то бесконечном цикле без видимой активности.
Я могу получить pid
запущенного процесса, чтобы как создать трассировку, которую я могу использовать для отчета об ошибке?
Я работаю на Linux.
Попробуйте jstack. Он даст вам полный список тем, что ваши потоки делают. Все, что ему нужно, это процесс pid.
Возьмите дамп потока. Подключитесь через визуальную виртуальную машину и запросите дамп. Или если на unix тогда kill -3 pid или на окна Ctrl + Break на консоли процесса сделает это за вас. Свалка идет прямо к консоли. Вы также можете использовать jstack для сброса дампа.
Ctrl+\
в linux (который отправляет SIGQUIT
)
Ctrl+Break
на окнах (который отправляет SIGBREAK
в MSVCRT)
В * nix, с помощью top
, нажав H
, вы можете видеть потоки.
Затем с jps
вы можете увидеть, что pid
помните, что если процесс был запущен с привилегиями, вы должны выполнить его с помощью sudo
, например.
Если вы берете идентификатор потока и преобразуете его в шестнадцатеричный, то вы можете пересечь эти данные с выходом jstack pid
.
Оба инструмента находятся в $JAVA_HOME/bin
.
Взгляните на VisualVM. С ним есть много хороших инструментов для профилирования, и вы можете выполнить дамп потока.