Suche…


Wie funktioniert Eclipse Remote Debugging hinter den Scences?

Das Eclipse-Debugging beginnt mit den sogenannten Agents.

Die JVM , die die kompatiblen .class Quellen .class , verfügt über eine Funktion, mit der externe Bibliotheken (entweder in Java oder C ++ geschrieben) in die JVM eingefügt werden können, etwa zur Laufzeit. Diese externen Bibliotheken werden als Agenten bezeichnet. Sie können den Inhalt der ausgeführten .class Dateien ändern. Diese Agents haben Zugriff auf Funktionen der JVM, auf die nicht innerhalb eines regulären Java-Codes, der in der JVM ausgeführt wird, zugegriffen werden kann, und sie können verwendet werden, um interessante Dinge wie das Einfügen und Modifizieren des laufenden Quellcodes, Profiling usw. zu tun dieses Stück Funktionalität, um ihre Magie zu erreichen.

Und um eine Agent-Lib an eine JVM zu übergeben, tun Sie dies über Startargumente mit der

 agentlib:libname[=options] format.

Wir haben tatsächlich eine Agent Lib namens jdwp an die JVM übergeben, auf der Tomcat ausgeführt wird. Das jdwp ist eine JVM-spezifische, optionale Implementierung des JDWP (Java Debug Wire Protocol) , die zur Definition der Kommunikation zwischen einem Debugger und einer laufenden JVM verwendet wird. Seine Implementierung, falls vorhanden, wird als native Bibliothek der JVM als jdwp.so oder jdwp.dll

Was macht es also?

Einfach ausgedrückt, dient der jdwp-Agent, den wir übergeben, im Wesentlichen der Funktion einer Verbindung zwischen der JVM-Instanz, die eine Anwendung ausführt, und einem Debugger (der sich entweder remote oder lokal befinden kann). Da es sich um eine Agentenbibliothek handelt, kann er den laufenden Code abfangen, eine Brücke zwischen der JVM und einem Debugger erstellen und die Funktionalität eines Debuggers auf die JVM anwenden. Da in der JVM-Architektur die Debugging-Funktionalität nicht in der JVM selbst vorhanden ist, sondern in externe Tools (die als Debugger bezeichnet werden) abstrahiert werden, können sich diese Tools entweder auf dem lokalen Computer befinden, auf dem die JVM ausgeführt wird, die debuggt wird, oder sie können ausgeführt werden von einer externen Maschine. Diese entkoppelte, modulare Architektur ermöglicht es uns, eine JVM auf einer Remote-Maschine auszuführen und mithilfe des JDWP einen Remote-Debugger zu verwenden, mit dem sie kommunizieren kann.
Kurz gesagt, so funktioniert der Eclipse-Debugger.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow