Szukaj…


Jak działa zdalne debugowanie Eclipse za scenami

Debugowanie środowiska Eclipse rozpoczyna się od tak zwanego agenta.

JVM , który uruchamia zgodne źródła .class , ma funkcję, która umożliwia wstrzykiwanie bibliotek zewnętrznych (napisanych w Javie lub C ++) do JVM, prawie w czasie wykonywania. Te biblioteki zewnętrzne są nazywane agentami i mogą modyfikować zawartość uruchomionych plików .class . Agenci ci mają dostęp do funkcjonalności JVM, która nie jest dostępna z poziomu zwykłego kodu Java działającego wewnątrz JVM i mogą być używane do robienia interesujących rzeczy, takich jak wstrzykiwanie i modyfikowanie działającego kodu źródłowego, profilowanie itp. Narzędzia takie jak JRebel korzystają z ten element funkcjonalności pozwalający osiągnąć magię.

Aby przekazać Agent Lib do JVM, robisz to za pomocą argumentów startowych, używając

 agentlib:libname[=options] format.

W rzeczywistości przekazaliśmy Agenta Lib o nazwie jdwp do maszyny JVM z uruchomionym programem Tomcat. jdwp jest specyficzną dla JVM, opcjonalną implementacją JDWP (Java Debug Wire Protocol), która jest używana do definiowania komunikacji między debuggerem a działającą JVM. Jest to implementacja, jeśli jest dostarczana jako natywna biblioteka JVM jako jdwp.so lub jdwp.dll

Co to robi?

Mówiąc najprościej, przekazywany przez nas agent jdwp w zasadzie pełni funkcję łącza między instancją JVM z uruchomioną aplikacją a Debuggerem (który może być zdalny lub lokalny). Ponieważ jest to biblioteka agentów, ma ona zdolność przechwytywania działającego kodu, tworzenia pomostu między maszyną JVM a debuggerem oraz funkcji debugera stosowanej w maszynie JVM. Ponieważ w architekturze JVM funkcja debugowania nie znajduje się w samej JVM, ale jest abstrakcyjna w zewnętrznych narzędziach (które są trafnie nazywane debuggerami), narzędzia te mogą znajdować się na lokalnym komputerze z uruchomioną debugowaną maszyną JVM lub zostać uruchomione z jestem maszyną zewnętrzną. Jest to ta rozprzężona, modułowa architektura, która pozwala nam mieć JVM działającą na zdalnym komputerze i używając JDWP, mieć zdalny debugger, który może się z nim komunikować.
Krótko mówiąc, tak działa debugger Eclipse.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow