Как принудительно сделать дамп потока в Eclipse?
-
04-07-2019 - |
Вопрос
Я запускаю приложение Weblogic внутри Eclipse через среду выполнения BEA Weblogic Server v9.2. Если бы это выполнялось прямо из командной строки, я бы сделал ctrl-BREAK, чтобы вызвать дамп потока. Есть ли способ сделать это в Eclipse?
Решение
Действительно (спасибо VonC за указание на поток SO), Дастин в комментарии к своему сообщению указывает на jstack .
Я запустил небольшое приложение Java (с графическим интерфейсом) в Eclipse, я вижу связанный файл javaw.exe в диспетчере процессов Windows и его PID, 7088 (в Unix, конечно, еще проще).
Если я наберу в командной строке jstack 7088
, у меня будет требуемый дамп стека на поток.
Круто.
Было бы лучше, если бы мы могли сделать это напрямую из Eclipse, но это уже полезно.
Другие советы
проверьте SendSignal: http://www.latenighthacking.com/projects/2003/sendSignal/ р>
Вы можете сделать это, когда находитесь в режиме отладки: перейдите в представление отладки в перспективе отладки, нажмите на запущенный процесс и нажмите на паузу, вы получите графический стек всех ваших процессов.
Примечание: это также работает при использовании удаленной отладки, вам не нужно запускать weblogic из eclipse, вы можете запустить его самостоятельно, открыть порты отладки и создать " конфигурацию удаленной отладки java-приложений " для этого.
Eclipse Wiki: Как сообщить о тупике перечисляет все возможные варианты создания дампа потока в Eclipse , В зависимости от конкретной ситуации, один или другой может работать лучше - мой личный фаворит в Windows - инструмент Adaptj Stacktrace.
StackTrace - еще один вариант, который вы можете попробовать. Из особенностей:
Дамп потока для запущенных процессов Java в качестве службы Windows (например, Tomcat для пример), начался с javaw.exe , апплеты, работающие внутри любого браузера или JVM встроены в другой процесс. StackTrace работает на Windows, Linux и Mac OS X.
если вы предпочитаете решение на основе пользовательского интерфейса, visualvm может быть хорошим выбором. (его преимущество в том, что он распространяется вместе с JDK)
Чтобы получить дамп потока в visualvm:
<Ол> Потоки
(вкладка) - > Дамп темы
(кнопка) Вы пытались запустить затмение с помощью java.exe вместо javaw.exe (в вашем eclipse.ini )?
Это может дать вам необходимую консоль, как описано в этой ошибке и в этом сообщении . р>
Другие идеи (в терминах опций Java) могут быть получены из этого другой SO вопрос .
Вы можете подключиться через JVisualVM и получить дамп потока. Просто щелкните правой кнопкой мыши узел приложения в дереве приложений и выберите " Дамп потока "
В Linux, по крайней мере, вы можете сделать ps -ef | grep java
, чтобы получить PID, а затем выполнить kill -3 PID
, и он выведет его на консоль Eclipse.