Как найти проблемную нить в удаленном отладчике Eclipse? - PullRequest
2 голосов
/ 02 марта 2010

У меня есть веб-приложение, работающее на сервере приложений jboss (но оно не специфично для jboss, поэтому мы можем также предположить, что это tomcat или любой другой сервер). Теперь у меня есть проблема, что один поток, кажется, находится в тупиковой ситуации. Он использует 100% CPU все время. Я запустил сервер с включенным портом отладки и могу подключить к нему Eclipse. Но проблема в том, что запущено много потоков. Как я могу найти нужную тему? Я знаю идентификатор процесса (из команды Linux "top"), но я думаю, что это не поможет. Действительно ли мне нужно открывать каждую ветку отдельно и проверять, что они в данный момент делают? Или в Eclipse есть способ отфильтровать потоки на «наиболее активные» или что-то подобное?

Ответы [ 2 ]

2 голосов
/ 02 марта 2010

Вы можете попробовать создать дамп потока (CTRL + разрыв, как показано в этой теме ).

Или вы можете присоединить JConsole к удаленному сеансу (поэтому оставьте пока Eclipse в стороне), отслеживать потоки и генерировать дамп потока.

альтернативный текст http://www.jroller.com/dumpster/resource/tdajconsole.png

1 голос
/ 02 марта 2010

Похоже, вам нужно сузить круг до кода, в котором есть ошибка, указав, какой поток сначала потребляет процессор, а затем какой код выполняется этим потоком, и в этот момент вы можете выполнять удаленную отладку.

Я бы предложил использовать что-то вроде JProfiler, jvisualvm, jconsole или что-то подобное. Использование одного из этих инструментов позволит вам получить представление о том, что делает поток, и позволит вам отсортировать потоки по используемым циклам процессора, чтобы вы могли быстро найти нарушающий поток.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...