Вопрос

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

Примечание: это также работает при использовании удаленной отладки, вам не нужно запускать 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.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top