Domanda

Sto lanciando un'applicazione Weblogic all'interno di Eclipse tramite l'ambiente di runtime BEA Weblogic Server v9.2. Se questo fosse in esecuzione direttamente dalla riga di comando, farei un ctrl-BREAK per forzare un dump del thread. C'è un modo per farlo in Eclipse?

È stato utile?

Soluzione

In effetti (grazie VonC per indicare il thread SO), Dustin, in un commento al suo messaggio, punta a jstack .

Ho eseguito una piccola applicazione Java (con GUI) in Eclipse, posso vedere il relativo javaw.exe nel gestore dei processi di Windows e il suo PID, 7088 (ovviamente è ancora più semplice in Unix).

Se digito al prompt dei comandi jstack 7088 , ho il dump dello stack desiderato per thread.
Cool.

Sarebbe meglio se potessimo farlo direttamente da Eclipse, ma è già utile così com'è.

Altri suggerimenti

Puoi farlo quando sei in modalità debug: vai alla vista debug nella prospettiva debug, fai clic sul processo che hai avviato e fai clic su pausa, otterrai uno stack grafico di tutti i tuoi processi.

Nota: questo funziona anche quando si utilizza il debug remoto, non è necessario avviare weblogic da eclipse, è possibile avviarlo da solo, aprire le porte di debug e creare una configurazione di debug dell'applicazione java remota " per questo.

Eclipse Wiki: How to Report a Deadlock elenca tutte le possibili opzioni per creare un dump di thread in Eclipse . A seconda della situazione concreta, l'uno o l'altro potrebbero funzionare meglio: il mio preferito su Windows è lo strumento Adaptj Stacktrace.

StackTrace è un'altra opzione che puoi provare. Dalle funzionalità:

  

Dump thread per processi Java in esecuzione   come servizio Windows (come Tomcat, per   esempio), iniziato con javaw.exe ,   applet in esecuzione all'interno di qualsiasi browser o   JVM incorporate in un altro processo.   StackTrace funziona su Windows, Linux e   Mac OS X.

se preferisci la soluzione basata sull'interfaccia utente visualvm potrebbe essere una buona scelta. (il vantaggio è anche che è distribuito con JDK)

Per eseguire il dump del thread in visualvm:

  1. connettersi al processo (remoto o locale) e
  2. cerca Discussioni (tab) - > Thread Dump (pulsante)

Hai provato ad avviare la tua eclissi con java.exe invece di javaw.exe (nel tuo eclipse.ini )?

Questo potrebbe fornirti la console di cui hai bisogno, come descritto in questo bug e in questo messaggio .

Altre idee (in termini di opzioni Java) potrebbero essere derivate da questo altra domanda SO .

È possibile connettersi tramite VisualVM e ottenere un dump del thread. Fai clic con il pulsante destro del mouse sul nodo dell'applicazione nella struttura Applicazioni e seleziona " Thread dump "

Almeno su Linux puoi fare un ps -ef | grep java per ottenere il PID e quindi eseguire un kill -3 PID e lo invierà alla console Eclipse.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top