Zoeken…


Hoe werkt Eclipse Remote Debugging achter de schermen

Eclipse-foutopsporing begint met wat Agents wordt genoemd.

De JVM , die de compatibele .class bronnen uitvoert, heeft een functie waarmee externe bibliotheken (geschreven in Java of C ++) in de JVM kunnen worden geïnjecteerd, zowat runtime. Deze externe bibliotheken worden Agenten genoemd en kunnen de inhoud van de uitgevoerde .class bestanden wijzigen. Deze agenten hebben toegang tot de functionaliteit van de JVM die niet toegankelijk is vanuit een reguliere Java-code die in de JVM wordt uitgevoerd en ze kunnen worden gebruikt om interessante dingen te doen, zoals het injecteren en wijzigen van de lopende broncode, profilering, enz. Tools zoals JRebel maken gebruik van dit stukje functionaliteit om hun magie te bereiken.

En om een Agent Lib door te geven aan een JVM, doet u dit via opstartargumenten met behulp van de

 agentlib:libname[=options] format.

We jdwp een agent Lib met de naam jdwp aan de JVM met Tomcat. De jdwp is een JVM-specifieke, optionele implementatie van de JDWP (Java Debug Wire Protocol) die wordt gebruikt voor het definiëren van communicatie tussen een debugger en een actieve JVM. Het is de implementatie, indien aanwezig wordt geleverd als een native bibliotheek van de JVM als jdwp.so of jdwp.dll

Dus wat doet het?

In eenvoudige bewoordingen, de jdwp-agent die we passeren, dient in feite de functie van een koppeling tussen de JVM-instantie die een toepassing uitvoert en een Debugger (die zich op afstand of lokaal kan bevinden). Omdat het een agentbibliotheek is, heeft het de mogelijkheid om de lopende code te onderscheppen, een brug te maken tussen de JVM en een debugger en de functionaliteit van een debugger op de JVM toe te passen. Omdat in de JVM-architectuur de foutopsporingsfunctionaliteit niet wordt gevonden in de JVM zelf, maar wordt geabstraheerd in externe hulpprogramma's (die toepasselijk worden aangeduid als foutopsporingsprogramma's), kunnen deze hulpprogramma's zich bevinden op de lokale computer waarop de JVM wordt gedebugged of worden uitgevoerd van een externe machine. Het is deze ontkoppelde, modulaire architectuur waarmee we een JVM op een externe machine kunnen laten draaien en met behulp van de JDWP een externe debugger kunnen laten communiceren.
Kortom, dit is hoe Eclipse debugger werkt.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow