Я запускаю приложение Weblogic внутри Eclipse через среду выполнения BEA Weblogic Server v9.2. Если бы это было прямо из командной строки, я бы сделал ctrl-BREAK, чтобы заставить дамп потока. Есть ли способ сделать это в Eclipse?
Как заставить дамп потока в Eclipse?
Ответ 1
Действительно (спасибо VonC, чтобы указать на поток SO), Дастин в комментарии к своему сообщению указывает на jstack.
Я запустил небольшое приложение Java (с графическим интерфейсом) в Eclipse, я вижу связанный javaw.exe в диспетчере процессов Windows и его PID, 7088 (это, конечно, еще проще в Unix).
Если я наберу в командной строке jstack 7088
, у меня есть требуемый сброс стека для потока.
Круто.
Было бы лучше, если бы мы могли сделать это непосредственно из Eclipse, но это уже полезно, как есть.
Ответ 2
Вы можете сделать это, когда находитесь в режиме отладки: перейдите в режим отладки в перспективе отладки, щелкните процесс, который вы запустили, и нажмите на паузу, вы получите графический стек всех ваших процессов.
Примечание: это также работает при использовании удаленной отладки, вам не нужно запускать weblogic из eclipse, вы можете запускать его самостоятельно, открывать порты отладки и создавать для него "конфигурацию отладки для удаленного java-приложения".
Ответ 3
проверить SendSignal: http://www.latenighthacking.com/projects/2003/sendSignal/
Ответ 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.