Como Dump Tópico Força em Eclipse?
-
04-07-2019 - |
Pergunta
Estou lançando uma aplicação Weblogic dentro do Eclipse através do ambiente de tempo de execução v9.2 BEA Weblogic Server. Se isso fosse correndo em linha reta a partir da linha de comando, eu faria um ctrl-BREAK para forçar um despejo de thread. Existe uma maneira de fazê-lo no Eclipse?
Solução
Na verdade (graças VonC para apontar para o segmento SO), Dustin, num comentário à sua mensagem, aponta para jstack
Eu tenho que correr um pequeno aplicativo Java (com GUI) em Eclipse, eu posso ver o javaw.exe relacionado no Gerenciador de processo do Windows' e seu PID, 7088 (é ainda mais simples em Unix, é claro).
Se eu digitar em um prompt de comando jstack 7088
, tenho o despejo de pilha queria por thread.
Arrefecer.
Seria melhor se pudéssemos fazer isso diretamente do Eclipse, mas que já é útil como é.
Outras dicas
verificar SendSignal: http://www.latenighthacking.com/projects/2003/sendSignal/
Você pode fazer isso quando você está no modo de depuração:. Vá para a vista de depuração na perspectiva de depuração, clique no processo de ter lançado e clique em pause, você vai ter uma pilha gráfica de todos os seus processos
Nota: isso também funciona ao usar remoto depuração, você não precisa WebLogic lançamento de eclipse, você pode lançá-lo por conta própria, abrir as portas de depuração e criar uma "configuração de depuração aplicativo java remoto" para ele.
Eclipse Wiki: Como relatório lista um impasse todas as opções possíveis de criar um despejo de thread no Eclipse . Dependendo da situação concreta, um ou outro pode funcionar melhor - o meu favorito no Windows é a ferramenta Adaptj Stacktrace
.StackTrace é outra opção que você pode tentar. A partir dos recursos:
despejo Tópico para Java processos em execução como um serviço Windows (como Tomcat, por exemplo), começou com javaw.exe , applets rodando dentro de qualquer navegador ou JVM incorporado dentro de um outro processo. StackTrace funciona em Windows, Linux e Mac OS X.
solução baseada se preferir UI VisualVM pode ser uma boa escolha. (É vantagem é também que ele é distribuído com o JDK)
Para tirar o despejo segmento em VisualVM:
- Conectar ao processo (remoto ou local) e
- ir para
Threads
(guia) ->Thread Dump
(botão)
Você tentou lançar o seu eclipse com java.exe em vez de javaw.exe (em sua eclipse.ini )?
Isso poderia dar-lhe o console que precisa, como descrito no este bug e em esta mensagem .
Outras idéias (em termos de opções de Java) poderia ser derivada a partir desta outra questão SO .
Você pode se conectar através do jvisualvm e obter um despejo de thread. Apenas clique direito sobre o nó de aplicativo a partir da árvore Applications e selecione "despejo Tópico"
No Linux, pelo menos você pode fazer uma ps -ef | grep java
para obter o PID e depois fazer um kill -3 PID
e vai saída para o console Eclipse.