Подтвердить что ты не робот

Как заставить дамп потока в Eclipse?

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

Ответ 4

Eclipse Wiki: Как сообщить о тупике перечисляет все возможные варианты создания дампа потока в Eclipse. В зависимости от конкретной ситуации один или другой может работать лучше - мой личный фаворит в Windows - это инструмент Adaptj Stacktrace.

Ответ 5

StackTrace - еще один вариант, который вы могли бы попробовать. Из функций:

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

Ответ 6

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

Чтобы взять дамп потока в visualvm:

  • подключиться к процессу (удаленному или локальному) и
  • перейти на Threads (вкладка) → Thread Dump (кнопка)

Ответ 7

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

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

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

Ответ 8

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

Ответ 9

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