Ricerca…


Come funziona Eclipse Remote Debugging dietro le scences

Il debug di Eclipse inizia con ciò che viene definito come agenti.

La JVM , che esegue le sorgenti .class soddisfatte, ha una funzione che consente alle iniezioni esterne (scritte in Java o C ++) di essere inserite nella JVM, proprio in fase di runtime. Queste librerie esterne sono indicate come agenti e hanno la possibilità di modificare il contenuto dei file .class eseguiti. Questi agenti hanno accesso alle funzionalità della JVM che non sono accessibili da un normale codice Java in esecuzione all'interno della JVM e possono essere utilizzate per fare cose interessanti come iniettare e modificare il codice sorgente in esecuzione , la profilatura ecc. Strumenti come JRebel fa uso di questo pezzo di funzionalità per raggiungere la loro magia.

E per passare un agente Lib a una JVM, lo fai tramite gli argomenti di avvio, usando il

 agentlib:libname[=options] format.

In realtà stavamo passando un agente Lib chiamato jdwp alla JVM con Tomcat. jdwp è jdwp specifica JVM opzionale del JDWP (Java Debug Wire Protocol) che viene utilizzata per definire la comunicazione tra un debugger e una JVM in esecuzione. È l'implementazione, se presente viene fornita come libreria nativa della JVM come jdwp.so o jdwp.dll

Quindi, cosa fa?

In termini semplici, l'agente jdwp che passiamo serve fondamentalmente la funzione di essere un collegamento tra l'istanza JVM che esegue un'applicazione e un Debugger (che può trovarsi sia remoto che locale). Poiché è una libreria di agenti, ha la capacità di intercettare il codice in esecuzione, creare un ponte tra la JVM e un debugger e avere la funzionalità di un debugger applicata sulla JVM. Poiché nell'architettura JVM, la funzionalità di debug non si trova all'interno della JVM stessa ma viene estratta in strumenti esterni (che vengono definiti correttamente come debugger), questi strumenti possono risiedere sulla macchina locale che esegue la JVM in fase di debug o di esecuzione. da una macchina esterna. È questa architettura modulare disaccoppiata che ci consente di avere una JVM in esecuzione su una macchina remota e l'utilizzo del JDWP, di avere un debugger remoto in grado di comunicare con essa.
In breve, questo è il modo in cui funziona il debugger di Eclipse.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow