Як віддалена налагодження eclipse працює за лаштунками, tutorial, code q - a російська (ru)

Як працює Eclipse Remote Debugging за межами можливостей

Налагодження Eclipse починається з того, що називається агентом.

JVM. яка запускає підлеглі джерела .class має функцію, яка дозволяє вбудовувати бібліотеки ззовні (написані на Java або C ++) в JVM, як раз про час виконання. Ці зовнішні бібліотеки називаються агентами, і у них є можливість змінювати вміст файлів .class. Ці агенти мають доступ до функціональних можливостей JVM, які недоступні зі звичайного Java-коду, запущеного всередині JVM, і їх можна використовувати для створення цікавих речей, таких як впорскування і зміна вихідного коду, профілювання і т. Д. Такі інструменти, як JRebel, використовують Цей шматок функціональності для досягнення своєї магії.

І, щоб передати агент Lib в JVM, ви робите це шляхом запуску аргументів, використовуючи

Фактично ми передавали агент Lib по імені jdwp в JVM, що працює з Tomcat. jdwp - це специфічна JVM, необов'язкова реалізація JDWP (Java Debug Wire Protocol), яка використовується для визначення зв'язку між отладчиком і запущеної JVM. Це реалізація, якщо присутній в якості jdwp.so бібліотеки JVM як jdwp.so або jdwp.dll

Так що ж він робить?

Простіше кажучи, агент jdwp, який ми передаємо, в основному служить функцією зв'язку між екземпляром JVM, що запускає додаток, і отладчиком (який може бути розташований як віддалено, так і локально). Так як це бібліотека агентів, у неї є можливість перехопити запущений код, створити міст між JVM і отладчиком і мати функціональність налагоджувача, що застосовується до JVM. Оскільки в архітектурі JVM функціональність налагодження не знайдено в самому JVM, але абстрагована від зовнішніх інструментів (які точно називаються отладчиками), ці кошти можуть або знаходитися на локальній машині, на якій JVM налагоджували, або запускається З am зовнішній машина. Саме ця незв'язана модульна архітектура дозволяє нам мати JVM, запущену на віддаленому комп'ютері і використовує JDWP, мати віддалений відладчик з можливістю зв'язку з ним.
Коротше кажучи, так працює відладчик Eclipse.

eclipse Tutorials