Какова Архитектура Отладчика Платформы Java (JPDA)?
JPDA является многоярусной архитектурой отладки, которая позволяет разработчикам инструментов легко создавать приложения отладчика, которые работают портативно через платформы, виртуальная машина (VM) версии JDK и реализации.
Определяет высокоуровневый интерфейс языка Java, который разработчики инструмента могут легко использовать, чтобы записать удаленные приложения отладчика.
Ссылочная реализация
В дополнение к спецификации этих интерфейсов Sun Microsystems также обеспечивает ссылочную реализацию, которая состоит из:
Реализации TI JVM на многократном Sun VMs (см. документацию VM).
Бэкэнд, который использует TI JVM, чтобы реализовать сторону отлаживаемой программы JDWP.
Фронтэнд, который использует сторону отладчика JDWP, чтобы реализовать JDI.
Два простых приложения отладчика в качестве примера, которые основываются на JDI.
Это обеспечивает многоуровневую реализацию, в которой можно заменить любым уровнем.
Используя JPDA
Разработчик отладчика может сцепиться в JPDA в любом уровне. Так как JDI является высшим уровнем и самый легкий использовать, мы поощряем разработчиков использовать этот интерфейс. Предположите, что компания разрабатывает отладчик, используя JDI. Они могут использовать это со ссылочной реализацией, и это будет автоматически работать с VMs и платформами, которые поддерживает Sun. Это может также работать, например, со ссылочным фронтэндом реализации и отлаживаемой программой, выполняющей VM другой компании, который реализует JDWP (который мог бы использовать или обойти TI JVM).
Некоторые отладчики создаются сверху нижних уровней, JDWP (например, если фронтэнд не пишется на языке Java), или TI JVM (для специализированных отладчиков, которые нуждаются в низкоуровневой функциональности).
Компоненты
отлаживаемая программа
Отлаживаемая программа является отлаживаемым процессом, это состоит из отлаживаемого приложения (не показанный), VM запускающий приложения и бэкэнда отладчика.
Виртуальная машина Java (VM)
Это отсылает к VM выполнение отлаживаемого приложения.
Архитектура отладчика разрабатывается для использования в широком спектре реализаций VM.
VM реализует Интерфейс Отладки виртуальной машины Java (TI JVM).
бэкэнд
Бэкэнд отладчика ответственен за передачу запросов от фронтэнда отладчика до отлаживаемой программы VM и для того, чтобы передать ответ на эти запросы (включая требуемые события) к фронтэнду. Бэкэнд связывается с фронтэндом по коммуникационному каналу, используя Протокол Провода Отладки Java (JDWP). Бэкэнд передает с отлаживаемой программой VM использование Интерфейса Отладки виртуальной машины Java (TI JVM).
Это является четким от опыта, что код поддержки для отладочных средств, работая на отлаживаемой программе и записанный в Java, спорит с отлаживаемой программой способами, которыми причина зависает и другое нежелательное поведение. Таким образом бэкэнд является собственным кодом. Это, поочередно, подразумевает, что TI JVM является чистым собственным интерфейсом.
коммуникационный канал
Коммуникационный канал является ссылкой между фронтэндами и бэкэндами отладчика. Это может считаться состоящий из двух механизмов:
Соединитель. Соединитель является объектом JDI, который является средствами, которыми соединение устанавливается между передней стороной и бэкэндами.
JPDA определяет три типа соединителей:
соединители слушания: фронтэнд прислушивается к входящему соединению от бэкэнда
присоединение соединителей: фронтэнд присоединяет к уже рабочему бэкэнду.
запуск соединителей: фронтэнд фактически запускает процесс java, который выполнит код отлаживаемой программы и бэкэнд.
Транспорт. Транспорт является базовым механизмом, используемым, чтобы переместить биты между фронтэндом и бэкэндом.
Транспортный используемый механизм является неуказанным; возможные механизмы включают: сокеты, последовательные линии, и разделяемая память. Однако, формат и семантика сериализированного потока битов, текущего по каналу, определяются Протоколом Провода Отладки Java (JDWP).
Запускаясь с J2SE 5.0, JPDA включает интерфейсы поставщика услуг, чтобы позволить разработку и развертывание соединителя и транспортные реализации. Эти интерфейсы поставщика услуг позволяют отладчику и другим поставщикам инструмента разрабатывать новые реализации соединителя и обеспечивать дополнительные транспортные механизмы и вне сокета и транспорта разделяемой памяти, обеспеченного Sun. Интерфейсы поставщика услуг в JDI определяются в com.sun.jdi.connect.spi пакете.
В дополнение к интерфейсам поставщика услуг в JDI JPDA также определяет транспортный интерфейс библиотеки, названный Транспортным Интерфейсом Протокола Провода Отладки Java™. Транспортная библиотека загружается агентом JDWP в целевом VM и пользуется, чтобы установить соединение с отладчиком и транспортировать пакеты JDWP между отладчиком и VM.
Фронтэнд отладчика реализует высокоуровневый Интерфейс Отладки Java (JDI). Фронтэнд использует информацию из низкоуровневого Протокола Провода Отладки Java (JDWP).
Пользовательский интерфейс (UI)
Пользовательский интерфейс к отладчику не определяется; намерение состоит в том, что поставщики инструмента обеспечат значение добавленные реализации. Мы обеспечиваем пример простой графический интерфейс пользователя (GUI), который служит тестовым ремнем безопасности и как начальной точкой для разработки более сложных GUI. Версия JDB также доступна как пример.
Примером UIs являются клиенты Интерфейса Отладки Java (JDI).
Определяет службы, VM должен предусмотреть отладку. Включает запросы на информацию (например, текущий стековый фрейм), действия (например, установите контрольную точку), и уведомление (например, когда контрольная точка была поражена). Отладчик может использовать информацию VM кроме этого (например, Java Собственный Интерфейс (JNI)), но это - источник всего отладчика определенная информация.
Определение Интерфейса VM позволяет любому конструктору VM включаться легко в архитектуру отладки. Это также позволяет альтернативные реализации канала связи. Реализации VM, которые не придерживаются этого интерфейса, могут все еще обеспечить доступ через Протокол Провода Отладки Java (JDWP).
Определяет формат информации и запрашивает переданный между процессом отлаживаемой программы и фронтэндом отладчика. Это не определяет транспортный механизм (сокет, последовательная линия, разделяемая память...).
Спецификация протокола позволяет отлаживаемой программе и фронтэнду отладчика работать при отдельных реализациях VM и/или на отдельных платформах. Это также позволяет фронтэнду быть записанным на языке кроме Java, или отлаживаемой программе, чтобы быть несобственным (например, Java).
Информация и запросы примерно на уровне Интерфейса Отладки виртуальной машины Java (TI JVM), но будут включать дополнительную информацию и запросы, требуемые проблемами пропускной способности, примеры включают информационную фильтрацию и пакетную обработку.
Определяет информацию и запросы на пользовательском уровне кода.
В то время как конструкторы отладчика могли непосредственно использовать Протокол Провода Отладки Java (JDWP) или Интерфейс Отладки виртуальной машины Java (TI JVM), этот интерфейс значительно облегчает интеграцию отладки возможностей в среды разработки. Мы рекомендуем уровень JDI для всей разработки отладчика.