Как вообще реализована удаленная отладка

Я уже давно использую удаленную отладку с JDeveloper на сервер Weblogic и нашел ее очень полезной. Но мне интересно понять, как технически реализована удаленная отладка.

Когда я делаю какие-либо изменения кода Java и перестраиваю класс в jdeveloper на удаленной машине, с которой я отлаживаю сервер, изменения кода автоматически подхватываются сервером. Как это произошло? Отправляет ли инструмент скомпилированный класс Java по сети на сервер?

Может ли кто-нибудь поделиться какими-либо документами/ссылками, объясняющими технические особенности удаленной отладки.

Спасибо и с уважением, Хариш


person Harish    schedule 17.01.2011    source источник


Ответы (1)


Не уверен, что вы спрашиваете об удаленной отладке в целом или о конкретных инструментах, которые вы описываете.

Я мало что знаю о Java/jdeveloper, но в целом удаленная отладка работает следующим образом:

  • На целевой машине специальный серверный процесс подключается к исполняемому файлу, который вы хотите отладить, точно так же, как отладчик при локальном запуске. Этому серверу не нужно знать о символах и исходном коде, достаточно запустить исполняемый файл. Используя системные команды, он может попросить его остановиться и проверить объем памяти.
  • На главной машине запускается сам отладчик, а также копия исполняемого файла и его исходного кода. Отладчик связывается с сервером на целевой машине, используя какой-либо протокол (TCP/IP или, возможно, последовательный для встроенных устройств) и просит его выполнить шаг, проверяет определенные области памяти, о которых он знает из информации об отладке в исполняемом файле, может показать исходный код отлаживается для пользователя и т. д.

Почитайте, например, на gdbserver, который, вероятно, является самым популярным. удаленный сервер отладки там.

Надеюсь это поможет :)

person Eli Bendersky    schedule 19.01.2011
comment
Спасибо. Я не ищу какой-то конкретный инструмент. Скорее я хочу понять в целом, как это работает. - person Harish; 25.01.2011
comment
Итак, когда я компилирую исходный код после изменений, он отправляет скомпилированный файл класса на сервер по сети? Это то, как удаленный сервер улавливает изменения кода Java? - person Harish; 25.01.2011
comment
@Harish: конечно, это один из способов реализации. Но это не интересные детали реализации, ИМХО. Более интересна концепция разделения отладчика на два взаимодействующих объекта. - person Eli Bendersky; 25.01.2011