È possibile collegare il debugger IntelliJ IDEA a un processo Java in esecuzione? Se si, come?
È possibile collegare il debugger IntelliJ IDEA a un processo Java in esecuzione? Se si, come?
Risposte:
Sì! Ecco come configurarlo.
Creare una configurazione di esecuzione remota:

La configurazione sopra fornisce tre campi di sola lettura. Queste sono opzioni che indicano a JVM di aprire la porta 5005 per il debug remoto durante l'esecuzione dell'applicazione. Aggiungi quello appropriato alle opzioni JVM dell'applicazione di cui stai eseguendo il debug. Un modo in cui potresti farlo sarebbe così:
export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
Ma dipende da come esegui la tua applicazione. Se non sei sicuro di quale dei tre si applica a te, inizia con il primo e scorri l'elenco fino a trovare quello che funziona.
È possibile passare suspend=na suspend=yper forzare l'applicazione in attesa fino alla connessione con IntelliJ prima dell'avvio. Ciò è utile se il punto di interruzione che si desidera colpire si verifica all'avvio dell'applicazione.
Avvia l'applicazione come faresti normalmente, quindi in IntelliJ seleziona la nuova configurazione e premi "Debug".

IntelliJ si connetterà alla JVM e avvierà il debug remoto.
È ora possibile eseguire il debug dell'applicazione aggiungendo punti di interruzione al codice dove desiderato. L'output dell'applicazione verrà comunque visualizzato ovunque, ma i punti di interruzione raggiungeranno IntelliJ.
Remotenon è disponibile nell'edizione della community? Sto usando la versione a pagamento. Qualcuno con l'edizione della community può confermare?
System.out.printlnin IntelliJ durante il debug remoto?
È possibile, ma devi aggiungere alcuni flag JVM quando avvii l'applicazione.
Devi aggiungere la configurazione di debug remota: Modifica configurazione -> Remota.
Quindi troverai nella finestra di dialogo visualizzata i parametri che devi aggiungere all'esecuzione del programma, come:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
Quindi, quando l'applicazione viene avviata, è possibile collegare il debugger. Se vuoi che la tua applicazione attenda che il debugger sia connesso, cambia il flag di sospensione in y ( suspend=y)
in AndroidStudio o idea
aggiungi Config "Opzioni VM"
“-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005”
ricorda "indirizzo"
Uso anche l' app GUI di Tomcat (nel mio caso: C: \ tomcat \ bin \ Tomcat9w.bin).
Vai alla scheda Java :
Imposta le proprietà Java, ad esempio:
Macchina virtuale Java
C: \ Programmi \ Java \ jre-10.0.2 \ bin \ server \ jvm.dll
Macchina virtuale Java
C: \ tomcat \ bin \ bootstrap.jar; C: \ tomcat \ bin \ tomcat-juli.jar
Opzioni Java :
-Dcatalina.home = C: \ Tomcat
-Dcatalina.base = C: \ Tomcat
-Djava.io.tmpdir = C: \ tomcat \ temp
-Djava.util.logging.config.file = C: \ tomcat \ conf \ logging.properties
-agentlib: JDWP = trasporti = dt_socket, server = y, sospendere = n, indirizzo = *: 8000
Opzioni di Java 9 :
--add-apre = java.base / java.lang = ALL senza nome
--add-apre = java.base / java.io = ALL senza nome
--add-apre = java.rmi / sun.rmi.transport = ALL senza nome