Как принудительно сделать дамп потока в Eclipse? - PullRequest
28 голосов
/ 28 октября 2008

Я запускаю приложение Weblogic внутри Eclipse через среду выполнения BEA Weblogic Server v9.2. Если бы это выполнялось прямо из командной строки, я бы сделал ctrl-BREAK, чтобы вызвать дамп потока. Есть ли способ сделать это в Eclipse?

Ответы [ 9 ]

25 голосов
/ 28 октября 2008

Действительно (спасибо VonC за указание на SO поток), Дастин в комментарии к своему сообщению указывает на jstack .

Я запустил небольшое приложение Java (с графическим интерфейсом) в Eclipse, я вижу связанный javaw.exe в диспетчере процессов Windows и его PID 7088 (в Unix, конечно, еще проще).

Если я наберу в командной строке jstack 7088, у меня будет требуемый дамп стека на поток.
Круто.

Было бы лучше, если бы мы могли сделать это непосредственно из Eclipse, но это уже полезно, как есть.

7 голосов
/ 08 февраля 2009
6 голосов
/ 28 октября 2008

Вы можете сделать это, когда находитесь в режиме отладки: перейдите в представление отладки в перспективе отладки, нажмите на запущенный процесс и нажмите на паузу, вы получите графический стек всех ваших процессов.

Примечание: это также работает при использовании удаленной отладки, вам не нужно запускать weblogic из eclipse, вы можете запустить его самостоятельно, открыть порты отладки и создать для него «конфигурацию отладки удаленного приложения Java». *

2 голосов
/ 30 июля 2014

, если вы предпочитаете решение на основе пользовательского интерфейса visualvm может быть хорошим выбором. (его преимущество также в том, что он распространяется с JDK)

Чтобы получить дамп потока в visualvm:

  1. подключиться к процессу (удаленному или локальному) и
  2. перейти на Threads (вкладка) -> Thread Dump (кнопка)
2 голосов
/ 29 апреля 2009

StackTrace - еще один вариант, который вы можете попробовать. Из особенностей:

Дамп потока для запущенных процессов Java Windows (например, Tomcat для пример), началось с javaw.exe , апплеты, работающие внутри любого браузера или JVM встроены в другой процесс. StackTrace работает на Windows, Linux и Mac OS X.

0 голосов
/ 17 марта 2012

В Linux, по крайней мере, вы можете сделать ps -ef | grep java, чтобы получить PID, а затем сделать kill -3 PID, и он выведет его на консоль Eclipse.

0 голосов
/ 19 февраля 2010

Вы можете подключиться через JVisualVM и получить дамп потока. Просто щелкните правой кнопкой мыши узел приложения в дереве приложений и выберите «Дамп потока»

0 голосов
/ 28 октября 2008

Вы пытались запустить eclipse с помощью java.exe вместо javaw.exe (в вашем eclipse.ini )?

Это может дать вам необходимую консоль, как описано в этой ошибке и в этом сообщении .

Другие идеи (в терминах java-опций) могут быть получены из этого другого вопроса SO .

...