Ссылочные типы возвратов для всех классов, загруженных к установленному сроку VM, которые соответствуют данную подпись. Ссылочные типы Multple будут возвращены, если два или больше загрузчика class загрузили class того же самого имени. Поиск ограничивается загруженными классами только; никакая попытка не предпринимается, чтобы загрузить class данной подписи.
Данные
строка
подпись
Подпись JNI class, чтобы найти (например, "Ljava/lang/String;").
Возвраты все потоки, в настоящий момент рабочие в целевом VM. Возвращенный список содержит потоки, создаваемые через java.lang. Поток, все собственные потоки, присоединенные к целевому VM через JNI, и системным потокам, создаваемым к установленному сроку VM. Потоки, которые еще не были запущены и потоки, которые завершили их выполнение, не включаются в возвращенный список.
Возвраты все группы потока, у которых нет родителя. Эта команда может использоваться в качестве первого шага в создании дерева (или деревьев) существующих групп потока.
Лишает законной силы это зеркало виртуальной машины. Канал связи к целевому VM закрывается, и целевой VM готовится принимать другое последующее соединение от этого отладчика или другого отладчика, включая следующие задачи:
Все запросы события отменяются.
Все потоки, приостановленные командой резюме на уровне потока или командой резюме VM-level, возобновляются как много раз по мере необходимости для них, чтобы работать.
Сборка "мусора" повторно включается во всех случаях, где она была отключена
Любые текущие вызовы метода, выполняющиеся в целевом VM, продолжаются после разъединения. После завершения любого такого вызова метода поток вызова продолжается от расположения, где это было первоначально остановлено.
Ресурсы, происходящие в этом VirtualMachine (ObjectReferences, ReferenceTypes, и т.д.), станут недопустимыми.
Возвращает размеры непостоянно размерных типов данных в целевом VM.The, возвращенные значения указывают на число байтов, используемых идентификаторами в пакетах команды и ответа.
Приостанавливает выполнение приложения, работающего в целевом VM. Весь Java распараллеливает в настоящий момент рабочий, будет приостановлен.
В отличие от java.lang. Thread.suspend, приостанавливает и виртуальной машины и отдельных потоков, считаются. Прежде, чем поток будет работать снова, он должен быть возобновлен посредством команды резюме VM-level, или резюме на уровне потока управляют тем же самым числом раз, он был приостановлен.
Выполнение резюме приложения после приостановить команды или события остановило это. Приостановки Виртуальной машины и отдельных потоков считаются. Если определенный поток приостанавливается n времена, он должен возобновленные n времена прежде, чем он будет продолжаться.
Завершает целевой VM с данным кодом выхода. На некоторых платформах код выхода мог бы быть усеченным, например, к младшему разряду 8 битов. Все идентификаторы, ранее возвращенные из целевого VM, становятся недопустимыми. Потоки, работающие в VM, резко завершаются. Смертельное исключение потока не выдается и наконец блокирует, не выполняются.
Получите возможности этого VM. Возможности возвращаются как булевские переменные, каждый указывающий на присутствие или отсутствие возможности. Команды, связанные с каждой возможностью, возвратят ошибку NOT_IMPLEMENTED, если cabability не будет доступен.
Данные
(Ни один)
Данные ответа
булев
canWatchFieldModification
VM может наблюдать полевую модификацию, и поэтому это может отправить Событие Контрольной точки Модификации?
булев
canWatchFieldAccess
VM может наблюдать доступ к полю, и поэтому это может отправить Событие Контрольной точки Доступа?
булев
canGetBytecodes
VM может получить байт-коды данного метода?
булев
canGetSyntheticAttribute
VM может определить, являются ли поле или метод синтетическими? (то есть, VM может определить, были ли метод или поле изобретены компилятором?)
булев
canGetOwnedMonitorInfo
VM может получить находящиеся в собственности мониторы infornation для потока?
булев
canGetCurrentContendedMonitor
VM может добраться, ток спорил монитор потока?
булев
canGetMonitorInfo
VM может получить информацию монитора для данного объекта?
Получите путь к классу и bootclasspath целевого VM. Если путь к классу не определяется, возвращает пустой список. Если bootclasspath не определяется, возвращает пустой список.
Данные
(Ни один)
Данные ответа
строка
baseDir
Основной каталог, используемый, чтобы разрешить относительные пути в любом из следующих списков.
Выпускает список объектных ID. Для каждого объекта в списке применяется следующее. Количество ссылок, сохраненных бэкэндом (подсчет ссылок), будет постепенно уменьшено refCnt. Если после того подсчет ссылок меньше чем или равен нулю, ID освобождается. Любые ресурсы бэкэнда, связанные с освобожденным ID, могут быть освобождены, и если сборка "мусора" была отключена для объекта, это будет повторно включено. Отправитель этой команды обещает, что никакие дальнейшие команды не будут отправлены, ссылаясь на освобожденный ID.
Использование этой команды не требуется. Если это не будет отправлено, то ресурсы, связанные с каждым ID, будут освобождены бэкэндом в некоторое время после того, как соответствующий объект будет собран "мусор". Является самым полезным использовать эту команду, чтобы уменьшить загрузку на бэкэнде, если очень большое количество объектов было получено от бэкэнда (многочисленный массив, например), но не может быть собрано "мусор" скоро.
ID могут быть снова использованы бэкэндом после того, как они были освобождены с этой командой. Это описание принимает подсчет ссылок, бэкэнд может использовать любую реализацию, которая работает эквивалентно.
Данные
интервал
запросы
Число объекта располагает запросы, которые следуют
Повторные времена запросов:
objectID
объект
Объектный ID
интервал
refCnt
Число раз этот объектный ID было частью пакета, полученного от бэкэнда. Точное количество препятствует тому, чтобы объектный ID был освобожден на бэкэнде, если это - часть входящего пакета, еще обработанного фронтэндом.
Говорит целевому VM прекращать отправлять события. События не отбрасываются; они сохранены, пока последующая команда ReleaseEvents не отправляется. Эта команда полезна, чтобы управлять числом событий, отправленных отладчику VM в ситуациях, где очень большие количества событий сгенерированы. В то время как мероприятия проводятся бэкэндом отладчика, выполнение приложения может быть заморожено бэкэндом отладчика, чтобы предотвратить переполнение буфера на бэкэнде. Ответы на команды никогда не сохранены и не влияются этой командой. Если мероприятия уже проводятся, эта команда игнорируется.
Говорит целевому VM продолжать отправлять события. Эта команда используется, чтобы восстановить нормальное действие после команды HoldEvents. Если нет никакой текущей команды HoldEvents в действительности, эта команда игнорируется.
Получите все возможности этого VM. Возможности возвращаются как булевские переменные, каждый указывающий на присутствие или отсутствие возможности. Команды, связанные с каждой возможностью, возвратят ошибку NOT_IMPLEMENTED, если cabability не будет доступен. Начиная с версии 1.4 JDWP.
Данные
(Ни один)
Данные ответа
булев
canWatchFieldModification
VM может наблюдать полевую модификацию, и поэтому это может отправить Событие Контрольной точки Модификации?
булев
canWatchFieldAccess
VM может наблюдать доступ к полю, и поэтому это может отправить Событие Контрольной точки Доступа?
булев
canGetBytecodes
VM может получить байт-коды данного метода?
булев
canGetSyntheticAttribute
VM может определить, являются ли поле или метод синтетическими? (то есть, VM может определить, были ли метод или поле изобретены компилятором?)
булев
canGetOwnedMonitorInfo
VM может получить находящиеся в собственности мониторы infornation для потока?
булев
canGetCurrentContendedMonitor
VM может добраться, ток спорил монитор потока?
булев
canGetMonitorInfo
VM может получить информацию монитора для данного объекта?
булев
canRedefineClasses
VM может пересмотреть классы?
булев
canAddMethod
VM может добавить методы, пересматривая классы?
булев
canUnrestrictedlyRedefineClasses
VM может пересмотреть classesin произвольные пути?
булев
canPopFrames
VM может вытолкать стековые фреймы?
булев
canUseInstanceFilters
VM может фильтровать события по конкретной цели?
булев
canGetSourceDebugExtension
VM может получить исходное расширение отладки?
булев
canRequestVMDeathEvent
VM может запросить смертельные события VM?
булев
canSetDefaultStratum
VM может установить слой значения по умолчанию?
булев
canGetInstanceInfo
VM может возвратить экземпляры, количества экземпляров классов и относящихся объектов?
булев
canRequestMonitorEvents
Запрос VM может следить за развитием событий?
булев
canGetMonitorFrameInfo
VM может получить мониторы с информацией глубины фрейма?
булев
canUseSourceNameFilters
VM может фильтровать class, готовят события исходным именем?
Устанавливает новые определения class. Если есть активные стековые фреймы в методах пересмотренных классов в целевом VM тогда, те активные фреймы продолжают выполнять байт-коды исходного метода. Эти методы считают устаревшими - см. IsObsolete. Методы в пересмотренных классах будут использоваться для нового, вызывает в целевом VM. Исходный ID метода обращается к пересмотренному методу. Все контрольные точки в пересмотренных классах очищаются. Если сброс стековых фреймов требуется, команда PopFrames может использоваться, чтобы вытолкать фреймы с устаревшими методами.
Требует, чтобы canRedefineClasses возможность - видела CapabilitiesNew. В дополнение к canRedefineClasses возможности у целевого VM должна быть canAddMethod возможность добавить методы, пересматривая классы, или canUnrestrictedlyRedefineClasses, чтобы пересмотреть классы произвольными способами.
Прямой суперкласс отличается для новой версии class, или набор непосредственно реализованных интерфейсов отличается, и canUnrestrictedlyRedefineClasses является ложью.
Ссылочные типы возвратов для всех классов, в настоящий момент загруженных к установленному сроку VM. И подпись JNI и универсальная подпись возвращаются для каждого class. Универсальные подписи описываются в разделе атрибута подписи в Спецификации Виртуальной машины Java™. Начиная с версии 1.5 JDWP.
Возвращает число экземпляров каждого ссылочного типа во входном списке. Только экземпляры, которые достижимы в целях сборки "мусора", считаются. Если ссылочный тип недопустим, eg. это был разгружен, нуль возвращается для его количества экземпляра.
Начиная с версии 1.6 JDWP. Требует, чтобы canGetInstanceInfo возможность - видела CapabilitiesNew.
Данные
интервал
refTypesCount
Число ссылочных типов, которые следуют. Должно быть неотрицательным.
Повторенные refTypesCount времена:
referenceTypeID
refType
ID ссылочного типа.
Данные ответа
интервал
количества
Число количеств, которые следуют.
Повторные времена количеств:
долго
instanceCount
Число экземпляров для соответствующего ссылочного типа в 'Данных'.
Для примитивных классов возвращенная подпись является подписью соответствующего типа примитива; например, "I" возвращается как подпись class, представленного java.lang. Целое число. ВВЕСТИ.
Возвращает экземпляр java.lang. ClassLoder, который загрузил данный ссылочный тип. Если ссылочный тип был загружен системой загрузчик class, возвращенный объектный ID является нулем.
Возвращает модификаторы (также известный как флаги доступа) для ссылочного типа. Возвращенная битовая маска содержит информацию об объявлении ссылочного типа. Если ссылочный тип является массивом или примитивным class (например, java.lang. Целое число. ВВЕДИТЕ), значение возвращенной битовой маски неопределено.
Данные
referenceTypeID
refType
ID ссылочного типа.
Данные ответа
интервал
modBits
Биты модификатора как определено в Главе 4 Спецификации Виртуальной машины Java™
Информация о возвратах для каждого поля в ссылочном типе. Наследованные поля не включаются. Cписок полей будет включать любые синтетические поля, создаваемые компилятором. Поля возвращаются в порядке, они происходят в файле class.
Данные
referenceTypeID
refType
ID ссылочного типа.
Данные ответа
интервал
объявленный
Число объявленных полей.
Повторенные объявленные времена:
fieldID
fieldID
Полевой ID.
строка
имя
Имя поля.
строка
подпись
Подпись JNI поля.
интервал
modBits
Битовые флаги модификатора (также известный как флаги доступа), которые обеспечивают дополнительную информацию о полевом объявлении. Отдельные флаговые значения определяются в Главе 4 Спецификации Виртуальной машины Java™. Кроме того, 0xf0000000 бит идентифицирует поле как синтетическое, если синтетическая возможность атрибута доступна.
Информация о возвратах для каждого метода в ссылочном типе. Наследованные методы не включаются. Список методов будет включать конструкторов (идентифицированный с именем" <init>"), метод инициализации (идентифицированный с именем" <clinit>") если существующий, и любые синтетические методы, создаваемые компилятором. Методы возвращаются в порядке, они происходят в файле class.
Данные
referenceTypeID
refType
ID ссылочного типа.
Данные ответа
интервал
объявленный
Число объявленных методов.
Повторенные объявленные времена:
methodID
methodID
ID метода.
строка
имя
Имя метода.
строка
подпись
Подпись JNI метода.
интервал
modBits
Битовые флаги модификатора (также известный как флаги доступа), которые обеспечивают дополнительную информацию об объявлении метода. Отдельные флаговые значения определяются в Главе 4 Спецификации Виртуальной машины Java™. Кроме того, 0xf0000000 бит идентифицирует метод как синтетический, если синтетическая возможность атрибута доступна.
Возвращает значение одного или более статических полей ссылочного типа. Каждое поле должно быть элементом ссылочного типа или одним из его суперклассов, суперинтерфейсов, или реализованных интерфейсов. Управление доступом не осуществляется; например, значения частных полей могут быть получены.
Данные
referenceTypeID
refType
ID ссылочного типа.
интервал
поля
Число значений, чтобы добраться
Повторные полевые времена:
fieldID
fieldID
Поле, чтобы добраться
Данные ответа
интервал
значения
Число значений возвратилось, всегда равный полям, числу значений, чтобы добраться.
Возвращает текущий статус ссылочного типа. Состояние указывает на степень, до которой ссылочный тип был инициализирован, как описано в разделе 2.1.6 из Спецификации Виртуальной машины Java™. Если class будет соединен, то ГОТОВЫЕ и ПРОВЕРЕННЫЕ биты в возвращенных битах состояния будут установлены. Если class будет инициализирован, то ИНИЦИАЛИЗИРОВАННЫЙ бит в возвращенных битах состояния будет установлен. Если ошибка произошла во время инициализации тогда, БИТ ОШИБКИ в возвращенных битах состояния будет установлен. Возвращенные биты состояния неопределены для типов массива и для примитивных классов (таких как java.lang. Целое число. ВВЕДИТЕ).
Возвращает интерфейсы, объявленные как реализовано этим class. Интерфейсы, косвенно реализованные (расширенный реализованным интерфейсом или реализованный суперклассом), не включаются.
Возвращает значение атрибута SourceDebugExtension. Начиная с версии 1.4 JDWP. Требует, чтобы canGetSourceDebugExtension возможность - видела CapabilitiesNew.
Возвращает подпись JNI ссылочного типа наряду с универсальной подписью, если есть тот. Универсальные подписи описываются в разделе атрибута подписи в Спецификации Виртуальной машины Java™. Начиная с версии 1.5 JDWP.
Данные
referenceTypeID
refType
ID ссылочного типа.
Данные ответа
строка
подпись
Подпись JNI для ссылочного типа.
строка
genericSignature
Универсальная подпись для ссылочного типа или пустой строки, если нет ни одного.
Информация о возвратах, включая универсальную подпись если таковые вообще имеются, для каждого поля в ссылочном типе. Наследованные поля не включаются. Cписок полей будет включать любые синтетические поля, создаваемые компилятором. Поля возвращаются в порядке, они происходят в файле class. Универсальные подписи описываются в разделе атрибута подписи в Спецификации Виртуальной машины Java™. Начиная с версии 1.5 JDWP.
Данные
referenceTypeID
refType
ID ссылочного типа.
Данные ответа
интервал
объявленный
Число объявленных полей.
Повторенные объявленные времена:
fieldID
fieldID
Полевой ID.
строка
имя
Имя поля.
строка
подпись
Подпись JNI поля.
строка
genericSignature
Универсальная подпись поля, или пустая строка, если нет ни одного.
интервал
modBits
Битовые флаги модификатора (также известный как флаги доступа), которые обеспечивают дополнительную информацию о полевом объявлении. Отдельные флаговые значения определяются в Главе 4 Спецификации Виртуальной машины Java™. Кроме того, 0xf0000000 бит идентифицирует поле как синтетическое, если синтетическая возможность атрибута доступна.
Информация о возвратах, включая универсальную подпись если таковые вообще имеются, для каждого метода в ссылочном типе. Наследованные methodss не включаются. Список методов будет включать конструкторов (идентифицированный с именем" <init>"), метод инициализации (идентифицированный с именем" <clinit>") если существующий, и любые синтетические методы, создаваемые компилятором. Методы возвращаются в порядке, они происходят в файле class. Универсальные подписи описываются в разделе атрибута подписи в Спецификации Виртуальной машины Java™. Начиная с версии 1.5 JDWP.
Данные
referenceTypeID
refType
ID ссылочного типа.
Данные ответа
интервал
объявленный
Число объявленных методов.
Повторенные объявленные времена:
methodID
methodID
ID метода.
строка
имя
Имя метода.
строка
подпись
Подпись JNI метода.
строка
genericSignature
Универсальная подпись метода, или пустая строка, если нет ни одного.
интервал
modBits
Битовые флаги модификатора (также известный как флаги доступа), которые обеспечивают дополнительную информацию об объявлении метода. Отдельные флаговые значения определяются в Главе 4 Спецификации Виртуальной машины Java™. Кроме того, 0xf0000000 бит идентифицирует метод как синтетический, если синтетическая возможность атрибута доступна.
Возвращает номера основной версии файла class и номера вспомогательной версии, как определено в формате файла class спецификации виртуальной машины Java.
Возвратите необработанные байты постоянного пула в формате constant_pool элемента Формата файла Класса в Спецификации Виртуальной машины Java™.
Начиная с версии 1.6 JDWP. Требует, чтобы canGetConstantPool возможность - видела CapabilitiesNew.
Данные
referenceTypeID
refType
class.
Данные ответа
интервал
количество
Общее количество постоянных записей пула плюс один. Это соответствует constant_pool_count элементу Формата файла Класса в Спецификации Виртуальной машины Java™.
Устанавливает значение одного или более статических полей. Каждое поле должно быть элементом типа class или одним из его суперклассов, суперинтерфейсов, или реализованных интерфейсов. Управление доступом не осуществляется; например, значения частных полей могут быть установлены. Заключительные поля не могут быть установлены. Для примитивных значений тип значения должен соответствовать тип поля точно. Для объектных значений, там должен существовать должно быть загружено, расширяющееся ссылочное преобразование от типа значения до типа поля и типа поля.
Вызывает статический метод. Метод должен быть элементом типа class или одним из его суперклассов, суперинтерфейсов, или реализованных интерфейсов. Управление доступом не осуществляется; например, закрытые методы могут быть вызваны.
Вызов метода произойдет в указанном потоке. Вызов метода может произойти, только если указанный поток был приостановлен событием. Вызов метода не поддерживается, когда целевой VM был приостановлен фронтэндом.
Указанный метод вызывается с параметрами в указанном списке параметров. Вызов метода синхронен; пакет ответа не отправляется до вызванных возвратов метода в целевом VM. Возвращаемое значение (возможно пустое значение) включается в пакет ответа. Если вызванный метод выдает исключение, ID объекта исключения устанавливается в пакете ответа; иначе, ID объекта исключения является нулем.
Для примитивных параметров тип значения аргумента должен соответствовать тип параметра точно. Для объектных параметров, там должен существовать должно быть загружено, расширяющееся ссылочное преобразование от типа значения аргумента до типа параметра и типа параметра.
По умолчанию все потоки в целевом VM возобновляются, в то время как метод вызывается, если они были ранее приостановлены событием или командой. Это делается, чтобы предотвратить мертвые блокировки, которые произойдут, если какому-либо из потоков будут принадлежать мониторы, которые будут необходимы вызванному методу. Возможно, что контрольные точки или другие события могли бы произойти во время вызова. Отметьте, однако, что это неявное резюме действует точно как команда резюме ThreadReference, так, если поток приостанавливает количество, больше чем 1, это останется в состоянии ожидания во время вызова. По умолчанию, когда вызов завершается, все потоки в целевом VM приостанавливаются, независимо их состояние перед вызовом.
Возобновление других потоков во время вызывания может быть предотвращено, определяя битовый флаг INVOKE_SINGLE_THREADED в options поле; однако, нет никакой защиты от или восстановления после мертвых блокировок, описанных выше, таким образом, эта опция должна использоваться с большим предостережением. Только указанный поток будет возобновлен (как описано для всех потоков выше). После завершения поточного сингла вызывают, поток вызова будет приостановлен еще раз. Отметьте, что любые потоки, запущенные во время единственного поточного вызова, не будут приостановлены, когда вызов завершится.
Если целевой VM разъединяется во время вызывания (например, через VirtualMachine располагают команду), вызов метода продолжается.
Создает новый объект этого типа, вызывая указанного конструктора. ID метода конструктора должен быть элементом типа class.
Создание экземпляра произойдет в указанном потоке. Создание экземпляра может произойти, только если указанный поток был приостановлен событием. Вызов метода не поддерживается, когда целевой VM был приостановлен фронтэндом.
Указанный конструктор вызывается с параметрами в указанном списке параметров. Вызов конструктора синхронен; пакет ответа не отправляется до вызванных возвратов метода в целевом VM. Возвращаемое значение (возможно пустое значение) включается в пакет ответа. Если конструктор выдает исключение, ID объекта исключения устанавливается в пакете ответа; иначе, ID объекта исключения является нулем.
Для примитивных параметров тип значения аргумента должен соответствовать тип параметра точно. Для объектных параметров, там должен существовать должно быть загружено, расширяющееся ссылочное преобразование от типа значения аргумента до типа параметра и типа параметра.
По умолчанию все потоки в целевом VM возобновляются, в то время как метод вызывается, если они были ранее приостановлены событием или командой. Это делается, чтобы предотвратить мертвые блокировки, которые произойдут, если какому-либо из потоков будут принадлежать мониторы, которые будут необходимы вызванному методу. Возможно, что контрольные точки или другие события могли бы произойти во время вызова. Отметьте, однако, что это неявное резюме действует точно как команда резюме ThreadReference, так, если поток приостанавливает количество, больше чем 1, это останется в состоянии ожидания во время вызова. По умолчанию, когда вызов завершается, все потоки в целевом VM приостанавливаются, независимо их состояние перед вызовом.
Возобновление других потоков во время вызывания может быть предотвращено, определяя битовый флаг INVOKE_SINGLE_THREADED в options поле; однако, нет никакой защиты от или восстановления после мертвых блокировок, описанных выше, таким образом, эта опция должна использоваться с большим предостережением. Только указанный поток будет возобновлен (как описано для всех потоков выше). После завершения поточного сингла вызывают, поток вызова будет приостановлен еще раз. Отметьте, что любые потоки, запущенные во время единственного поточного вызова, не будут приостановлены, когда вызов завершится.
Если целевой VM разъединяется во время вызывания (например, через VirtualMachine располагают команду), вызов метода продолжается.
Информация о номере строки возвратов для метода, если существующий. Таблица строки отображает исходные номера строки на начальный индекс кода строки. Таблица строки упорядочивается индексом кода (от самого низкого до самого высокого). Информация о номере строки является постоянной, если новое определение class не устанавливается, используя RedefineClasses.
Данные
referenceTypeID
refType
class.
methodID
methodID
Метод.
Данные ответа
долго
запустить
Самый низкий допустимый индекс кода для метода,> =0, или-1, если метод является собственным
долго
конец
Самый высокий допустимый индекс кода для метода,> =0, или-1, если метод является собственным
интервал
строки
Число записей в таблице строки для этого метода.
Повторные времена строк:
долго
lineCodeIndex
Начальный индекс кода строки, запустить <= lineCodeIndex < end
Информация о переменной возвратов для метода. Переменная таблица включает параметры и локальные переменные, объявленные в пределах метода. Например методы, "эта" ссылка включается в таблицу. Кроме того, могут присутствовать синтетические переменные.
Данные
referenceTypeID
refType
class.
methodID
methodID
Метод.
Данные ответа
интервал
argCnt
Число слов во фрейме используется параметрами. Восьмибайтовые параметры используют два слова; все другие используют тот.
интервал
слоты
Число переменных.
Повторные времена слотов:
долго
индекс кода
Первый индекс кода, в котором переменная видима (без знака). Используемый в соединении с length. Переменная может быть, получают или устанавливают только когда ток codeIndex <= current frame code index < индексируйте + длина
строка
имя
Имя переменной.
строка
подпись
Подпись JNI типа переменной.
интервал
длина
Значение без знака, используемое в соединении с codeIndex. Переменная может быть, получают или устанавливают только когда ток codeIndex <= current frame code index < индекс кода + длина
Определите, является ли этот метод устаревшим. Метод является устаревшим, если он был заменен неэквивалентным методом, используя команду RedefineClasses. Исходные и пересмотренные методы считают эквивалентными, если их байт-коды являются тем же самым за исключением индексов в постоянный пул, и константы, на которые ссылаются, равны.
Данные
referenceTypeID
refType
class.
methodID
methodID
Метод.
Данные ответа
булев
isObsolete
истина, если этот метод был replacedby неэквивалентный метод usingthe команда RedefineClasses.
Информация о переменной возвратов для метода, включая универсальные подписи для переменных. Переменная таблица включает параметры и локальные переменные, объявленные в пределах метода. Например методы, "эта" ссылка включается в таблицу. Кроме того, могут присутствовать синтетические переменные. Универсальные подписи описываются в разделе атрибута подписи в Спецификации Виртуальной машины Java™. Начиная с версии 1.5 JDWP.
Данные
referenceTypeID
refType
class.
methodID
methodID
Метод.
Данные ответа
интервал
argCnt
Число слов во фрейме используется параметрами. Восьмибайтовые параметры используют два слова; все другие используют тот.
интервал
слоты
Число переменных.
Повторные времена слотов:
долго
индекс кода
Первый индекс кода, в котором переменная видима (без знака). Используемый в соединении с length. Переменная может быть, получают или устанавливают только когда ток codeIndex <= current frame code index < индексируйте + длина
строка
имя
Имя переменной.
строка
подпись
Подпись JNI типа переменной.
строка
genericSignature
Универсальная подпись типа переменной или пустая строка, если нет ни одного.
интервал
длина
Значение без знака, используемое в соединении с codeIndex. Переменная может быть, получают или устанавливают только когда ток codeIndex <= current frame code index < индекс кода + длина
Возвращает значение одного или более полей экземпляра. Каждое поле должно быть элементом типа объекта или одним из его суперклассов, суперинтерфейсов, или реализованных интерфейсов. Управление доступом не осуществляется; например, значения частных полей могут быть получены.
Данные
objectID
объект
Объектный ID
интервал
поля
Число значений, чтобы добраться
Повторные полевые времена:
fieldID
fieldID
Поле, чтобы добраться.
Данные ответа
интервал
значения
Число значений возвратилось, всегда равный 'полям', числу значений, чтобы добраться. Значения полей упорядочиваются в ответе в том же самом порядке как соответствующий fieldIDs в команде.
Устанавливает значение одного или более полей экземпляра. Каждое поле должно быть элементом типа объекта или одним из его суперклассов, суперинтерфейсов, или реализованных интерфейсов. Управление доступом не осуществляется; например, значения частных полей могут быть установлены. Для примитивных значений тип значения должен соответствовать тип поля точно. Для объектных значений должно быть расширяющееся ссылочное преобразование от типа значения до типа поля, и тип поля должен быть загружен.
Возвраты контролируют информацию для объекта. Весь интервал потоков VM должен быть приостановлен. Требует, чтобы canGetMonitorInfo возможность - видела CapabilitiesNew.
Данные
objectID
объект
Объектный ID
Данные ответа
threadID
владелец
Владелец монитора, или нуль, если это в настоящий момент не принадлежит.
интервал
entryCount
Число раз монитор было введено.
интервал
официанты
Число потоков, которые ожидают монитора 0, если нет никакого текущего владельца
Вызывает метод экземпляра. Метод должен быть элементом типа объекта или одним из его суперклассов, суперинтерфейсов, или реализованных интерфейсов. Управление доступом не осуществляется; например, закрытые методы могут быть вызваны.
Вызов метода произойдет в указанном потоке. Вызов метода может произойти, только если указанный поток был приостановлен событием. Вызов метода не поддерживается, когда целевой VM был приостановлен фронтэндом.
Указанный метод вызывается с параметрами в указанном списке параметров. Вызов метода синхронен; пакет ответа не отправляется до вызванных возвратов метода в целевом VM. Возвращаемое значение (возможно пустое значение) включается в пакет ответа. Если вызванный метод выдает исключение, ID объекта исключения устанавливается в пакете ответа; иначе, ID объекта исключения является нулем.
Для примитивных параметров тип значения аргумента должен соответствовать тип параметра точно. Для объектных параметров должно быть расширяющееся ссылочное преобразование от типа значения аргумента до типа параметра, и тип параметра должен быть загружен.
По умолчанию все потоки в целевом VM возобновляются, в то время как метод вызывается, если они были ранее приостановлены событием или командой. Это делается, чтобы предотвратить мертвые блокировки, которые произойдут, если какому-либо из потоков будут принадлежать мониторы, которые будут необходимы вызванному методу. Возможно, что контрольные точки или другие события могли бы произойти во время вызова. Отметьте, однако, что это неявное резюме действует точно как команда резюме ThreadReference, так, если поток приостанавливает количество, больше чем 1, это останется в состоянии ожидания во время вызова. По умолчанию, когда вызов завершается, все потоки в целевом VM приостанавливаются, независимо их состояние перед вызовом.
Возобновление других потоков во время вызывания может быть предотвращено, определяя битовый флаг INVOKE_SINGLE_THREADED в options поле; однако, нет никакой защиты от или восстановления после мертвых блокировок, описанных выше, таким образом, эта опция должна использоваться с большим предостережением. Только указанный поток будет возобновлен (как описано для всех потоков выше). После завершения поточного сингла вызывают, поток вызова будет приостановлен еще раз. Отметьте, что любые потоки, запущенные во время единственного поточного вызова, не будут приостановлены, когда вызов завершится.
Если целевой VM разъединяется во время вызывания (например, через VirtualMachine располагают команду), вызов метода продолжается.
Предотвращает сборку "мусора" для данного объекта. По умолчанию все объекты в ответах бэкэнда могут быть собраны в любое время, целевой VM работает. Звонок в эту команду гарантирует, что объект не будет собран. Команда EnableCollection может использоваться, чтобы позволить набор еще раз.
Отметьте, что, в то время как целевой VM приостанавливается, никакая сборка "мусора" не произойдет, потому что все потоки приостанавливаются. Типичное исследование переменных, полей, и массивов во время приостановки безопасно, явно не отключая сборку "мусора".
Этот метод должен использоваться экономно, поскольку он изменяет образец сборки "мусора" в целевом VM и, следовательно, может привести к поведению приложения под отладчиком, который отличается от его неотлаженного поведения.
Сборка "мусора" разрешений для этого объекта. По умолчанию все объекты, возвращенные JDWP, могут стать недостижимыми в целевом VM, и следовательно могут быть собраны "мусор". Звонок в эту команду необходим, только если сборка "мусора" была ранее отключена с командой DisableCollection.
Возвраты возражают что непосредственно ссылка этот объект. Только объекты, которые достижимы в целях сборки "мусора", возвращаются. Отметьте, что на объект можно также сослаться другими способами, такой как от локальной переменной в стековом фрейме, или из глобальной ссылки JNI. Такой необъект referrers не возвращается этой командой.
Начиная с версии 1.6 JDWP. Требует, чтобы canGetInstanceInfo возможность - видела CapabilitiesNew.
Данные
objectID
объект
Объектный ID
интервал
maxReferrers
Максимальное количество обращения объектов возвратиться. Должно быть неотрицательным. Если нуль, все объекты обращения возвращаются.
В отличие от java.lang. Thread.suspend (), приостанавливает и виртуальной машины и отдельных потоков, считаются. Прежде, чем поток будет работать снова, он должен быть возобновлен то же самое число раз, он был приостановлен.
У приостановки единственных потоков с командой есть те же самые опасности java.lang. Thread.suspend (). Если приостановленный поток содержит монитор, необходимый другому рабочему потоку, мертвая блокировка возможна в целевом VM (по крайней мере, пока приостановленный поток не возобновляется снова).
Приостановленный поток, как гарантируют, останется приостановленным пока не возобновлено через один из упомянутых выше методов резюме JDI; приложение в целевом VM не может возобновить приостановленный поток через {@link java.lang.Thread#resume}.
Отметьте, что это не изменяет состояние потока (см. команду ThreadStatus.) Например, если это Работало, это будет все еще казаться рабочим к другим потокам.
Возобновляет выполнение данного потока. Если этот поток не был ранее приостановлен фронтэндом, вызывая эту команду не имеет никакого эффекта. Иначе, количество ожидания приостанавливает на этом потоке, постепенно уменьшается. Если это будет постепенно уменьшено к 0, то поток будет продолжать выполняться.
Возвращает текущий статус потока. Ответ состояния потока указывает на состояние потока в прошлый раз, когда это работало. приостановить состояние предоставляет информацию о приостановке потока, если любой.
Возвращает текущий стек вызовов приостановленного потока. Последовательность фреймов запускается с в настоящий момент выполняющегося фрейма, сопровождаемого его вызывающей стороной, и так далее. Поток должен быть приостановлен, и возвращенный frameID допустим только, в то время как поток приостанавливается.
Данные
threadID
поток
ID объекта потока.
интервал
startFrame
Индексирование первого фрейма, который получит.
интервал
длина
Количество фреймов, чтобы получить (-1 средство все остающиеся).
Возвращает количество фреймов на стеке этого потока. Поток должен быть приостановлен, и возвращенное количество допустимо только, в то время как поток приостанавливается. Возвраты JDWP.Error.errorThreadNotSuspended, если не приостановленный.
Возвращает объекты, мониторы которых были введены этим потоком. Поток должен быть приостановлен, и возвращенная информация релевантна только, в то время как поток приостанавливается. Требует, чтобы canGetOwnedMonitorInfo возможность - видела CapabilitiesNew.
Возвращает объект, если таковые вообще имеются, которого этот поток ожидает. Поток может ожидать, чтобы ввести монитор, или он может ожидать через java.lang. Метод Object.wait, для другого потока, чтобы вызвать уведомлять метод. Поток должен быть приостановлен, и возвращенная информация релевантна только, в то время как поток приостанавливается. Требует, чтобы canGetCurrentContendedMonitor возможность - видела CapabilitiesNew.
Данные
threadID
поток
ID объекта потока.
Данные ответа
теговый-objectID
монитор
Монитор, с которым спорят, или нуль, если нет никакого тока, спорил монитор.
Получите приостановить счет для этого потока. Приостановить количество является числом раз, поток был приостановлен через на уровне потока, или VM-level приостанавливают команды без соответствующего резюме
Возвраты контролируют объекты, принадлежавшие потоку, наряду с глубиной стека, в которой был получен монитор. Возвраты складывают глубину-1, если реализация не может решить, что глубина стека (например, для мониторов, полученных JNI MonitorEnter).The поток, должна быть приостановлена, и возвращенная информация релевантна только, в то время как поток приостанавливается. Требует, чтобы canGetMonitorFrameInfo возможность - видела CapabilitiesNew.
Начиная с версии 1.6 JDWP.
Данные
threadID
поток
ID объекта потока.
Данные ответа
интервал
находящийся в собственности
Число находящихся в собственности мониторов
Повторенные принадлежавшие времена:
теговый-objectID
монитор
Находящийся в собственности монитор
интервал
stack_depth
Расположение глубины стека, где монитор был получен
Вынудите метод возвратиться прежде, чем он достигнет оператора возврата.
Метод, который возвратится рано, упоминается как вызванный метод. Вызванный метод является текущим методом (как определено разделом Фреймов в Спецификации Виртуальной машины Java™) для указанного потока в то время, когда эта команда получается.
Указанный поток должен быть приостановлен. Возврат происходит, когда выполнение кода языка программирования Java возобновляется на этом потоке. Между отправкой этой команды и возобновлением выполнения потока, состояние стека неопределено.
Никакие дальнейшие инструкции не выполняются в вызванном методе. Определенно, наконец блоки не выполняются. Отметьте: это может вызвать непоследовательные состояния в приложении.
Блокировка, полученная, вызывая вызванный метод (если это - синхронизируемый метод) и, блокирует полученный, входя, синхронизировался, блоки в пределах вызванного метода выпускаются. Отметьте: это не применяется к блокировкам JNI или блокировкам java.util.concurrent.locks.
События, такие как MethodExit, сгенерированы, как они были бы в нормальном возврате.
Вызванный метод должен быть несобственным методом языка программирования Java. Принуждение возврата на потоке только с одним фреймом на стеке заставляет поток выходить когда возобновлено.
Для пустых методов значение должно быть пустым значением. Для методов, которые возвращают примитивные значения, тип значения должен соответствовать тип возврата точно. Для объектных значений должно быть расширяющееся ссылочное преобразование от типа значения до типа типа возврата, и тип возврата должен быть загружен.
Начиная с версии 1.6 JDWP. Требует, чтобы canForceEarlyReturn возможность - видела CapabilitiesNew.
Предпринятый, чтобы возвратиться рано из фрейма, соответствующего собственному методу. Или реализация неспособна обеспечить эту функциональность на этом фрейме.
Возвращает живые потоки и активные группы потока, непосредственно содержавшиеся в этой группе потока. Потоки и группы потока в дочерних группах потока не включаются. Поток жив, если он был запущен и еще не был остановлен. См. java.lang. ThreadGroup для информации об активном ThreadGroups.
Устанавливает диапазон компонентов массива. Указанный диапазон должен быть в пределах границ массива. Для примитивных значений тип каждого значения должен соответствовать компонентный тип массива точно. Для объектных значений должно быть расширяющееся ссылочное преобразование от типа значения до компонентного типа массива, и компонентный тип массива должен быть загружен.
Возвращает список всех классов, которые этот загрузчик class требовали загрузить. Этот загрузчик class, как полагают, является инициированием загрузчик class для каждого class в возвращенном списке. Список содержит каждый ссылочный тип, определенный этим загрузчиком и любыми типами, для которых загрузка была делегирована этим загрузчиком class к другому загрузчику class.
У видимого списка class есть полезные свойства относительно пространства имен типа. Определенное имя типа произойдет самое большее однажды в списке. Каждое поле или переменная, объявленная с тем именем типа в class, определенном этим загрузчиком class, должны быть разрешены к тому единственному типу.
Никакое упорядочивание возвращенного списка не гарантируется.
Установите запрос события. Когда событие, описанное этим запросом, имеет место, событие отправляется от целевого VM. Если событие имеет место, который не требовали тогда, оно не отправляется от целевого VM. Эти два исключения к этому являются VM, Запускают Событие и Смертельное Событие VM, которые являются автоматически сгенерированными событиями - см. Составную Команду для получения дальнейшей информации.
Данные
байт
eventKind
Вид события, чтобы запросить. См. JDWP.EventKind для полного списка событий, которые можно требовать; некоторые события могут потребовать возможности, чтобы требовать.
байт
suspendPolicy
Какие потоки приостанавливаются, когда это событие имеет место? Отметьте, что порядок событий и ответов команды точно отражает порядок, в котором потоки приостанавливаются и возобновляются. Например, если резюме VM-wide обрабатывается прежде, чем событие имеет место, который приостанавливает VM, ответ на команду резюме будет записан транспорту перед событием приостановки.
интервал
модификаторы
Ограничения, используемые, чтобы управлять числом сгенерированных событий. Модификаторы определяют дополнительные тесты, которые должно удовлетворить событие прежде, чем оно будет помещено в конечном счете очередь. События фильтруются, применяя каждый модификатор к событию в порядке, они определяются в этом Only набора события, которые удовлетворяют, обо всех модификаторах сообщают. Значение 0 средств там не является никакими модификаторами в запросе.
Фильтрация может улучшить производительность отладчика существенно, уменьшая количество трафика события, отправленного от целевого VM до отладчика VM.
Повторные времена модификаторов:
байт
modKind
Вид модификатора
Граф случая - если modKind 1:
Ограничьте требуемое событие, о котором сообщат самое большее однажды после данного числа возникновений. О событии не сообщают первое count - 1 времена этот фильтр достигаются. Чтобы запросить одноразовое событие, вызовите этот метод с количеством 1.
Как только количество достигает 0, любые последующие фильтры в этом запросе применяются. Если ни один из тех фильтров не заставляет событие быть подавленным, о событии сообщают. Иначе, о событии не сообщают. В любом случае о последующих событиях никогда не сообщают для этого запроса. Этот модификатор может использоваться с любым видом события.
интервал
количество
Граф перед событием. Один для одноразового.
Условное выражение случая - если modKind 2:
Условное выражение по выражению
интервал
exprID
Для будущего
ThreadOnly случая - если modKind 3:
Ограничивает события, о которых сообщают, теми в данном потоке. Этот модификатор может использоваться с любым видом события за исключением class, разгружаются.
threadID
поток
Необходимый поток
ClassOnly случая - если modKind 4:
Поскольку class готовит события, ограничивает события, сгенерированные этим запросом, чтобы быть подготовкой данного ссылочного типа и любых подтипов. Поскольку монитор ожидает и ожидал события, ограничивает события, сгенерированные этим запросом тем, объект монитора которых имеет данный ссылочный тип или любой из его подтипов. Для других событий, ограничивает события, сгенерированные этим запросом тем, расположение которых находится в данном ссылочном типе или любом из его подтипов. Событие будет сгенерировано для любого расположения в ссылочном типе, который может быть безопасно брошен к данному ссылочному типу. Этот модификатор может использоваться с любым видом события кроме class, разгружаются, поток запускаются, и распараллеливают конец.
referenceTypeID
clazz
Необходимый class
ClassMatch случая - если modKind 5:
Ограничивает события, о которых сообщают, теми для классов, имя которых соответствует данное ограниченное регулярное выражение. Поскольку class готовит события, готовое имя class является соответствующим. Поскольку class разгружает события, разгруженное имя class является соответствующим. Поскольку монитор ожидает и ожидал события, имя class объекта монитора является соответствующим. Для других событий является соответствующим имя class расположения события. Этот модификатор может использоваться с любым видом события кроме потока, запускают и распараллеливают конец.
строка
classPattern
Необходимый образец class. Соответствия ограничиваются точными совпадениями данного образца class и соответствиями образцов, которые начинаются или заканчиваются '*'; например, "*.Foo" или "java. *".
ClassExclude случая - если modKind 6:
Ограничивает события, о которых сообщают, теми для классов, имя которых не соответствует данное ограниченное регулярное выражение. Поскольку class готовит события, готовое имя class является соответствующим. Поскольку class разгружает события, разгруженное имя class является соответствующим. Поскольку монитор ожидает и ожидал события, имя class объекта монитора является соответствующим. Для других событий является соответствующим имя class расположения события. Этот модификатор может использоваться с любым видом события кроме потока, запускают и распараллеливают конец.
строка
classPattern
Отвергнутый образец class. Соответствия ограничиваются точными совпадениями данного образца class и соответствиями образцов, которые начинаются или заканчиваются '*'; например, "*.Foo" или "java. *".
LocationOnly случая - если modKind 7:
Ограничивает события, о которых сообщают, теми, которые происходят в данном расположении. Этот модификатор может использоваться с контрольной точкой, доступом к полю, полевой модификацией, шагом, и видами события исключения.
расположение
местоположение
Необходимое расположение
ExceptionOnly случая - если modKind 8:
Ограничивает исключения, о которых сообщают, их class и пойманы ли они или непойманы. Этот модификатор может использоваться с видами события исключения только.
referenceTypeID
exceptionOrNull
Исключение, чтобы сообщить. Нуль (0) средства сообщает об исключениях всех типов. Ненулевой тип ограничивает события исключения, о которых сообщают, исключениями данного типа или любым из его подтипов.
булев
пойманный
Сообщите о пойманных исключениях
булев
непойманный
Сообщите о непойманных исключениях. Отметьте, что не всегда возможно определить, поймано ли исключение или непоймано в то время, когда это бросается. См. расположение выгоды события исключения под составными событиями для получения дополнительной информации.
FieldOnly случая - если modKind 9:
Ограничивает события, о которых сообщают, теми, которые происходят для данного поля. Этот модификатор может использоваться с доступом к полю и полевыми видами события модификации только.
referenceTypeID
объявление
Введите, какое поле объявляется.
fieldID
fieldID
Обязательное поле
Шаг случая - если modKind 10:
Ограничивает события шага, о которых сообщают, теми, которые удовлетворяют ограничения размера и глубина. Этот модификатор может использоваться с видами события шага только.
Ограничивает события, о которых сообщают, теми, чей активный 'этот' объект является данным объектом. Значение соответствия является нулевым объектом для статических методов. Этот модификатор может использоваться с любым видом события кроме class, готовятся, class разгружаются, поток запускаются, и распараллеливают конец. Представленный в версии 1.4 JDWP.
objectID
экземпляр
Требуемый 'этот' объект
SourceNameMatch случая - если modKind 12:
Ограничивает class, о котором сообщают, готовят события тем для ссылочных типов, у которых есть исходное имя, которое соответствует данное ограниченное регулярное выражение. Исходные имена определяются SourceDebugExtension ссылочного типа. Этот модификатор может только использоваться с class, готовят события. Начиная с версии 1.6 JDWP. Требует, чтобы canUseSourceNameFilters возможность - видела CapabilitiesNew.
строка
sourceNamePattern
Необходимый исходный образец имени. Соответствия ограничиваются точными совпадениями данного образца и соответствиями образцов, которые начинаются или заканчиваются '*'; например, "*.Foo" или "java. *".
Очистите запрос события. См. JDWP.EventKind для полного списка событий, которые могут быть очищены. Только запрос события, соответствующий указанный вид события и requestID, очищается. Если нет соответствующего запроса события, что команда не и не приводит к ошибке. Автоматически сгенерированные события не имеют соответствующего запроса события и не могут быть очищены, используя эту команду.
Возвращает значение одной или более локальных переменных в данном фрейме. Каждая переменная должна быть видимой в индексе кода фрейма. Даже если информация о локальной переменной не доступна, значения могут быть получены, если фронтэнд в состоянии решить, что корректная локальная переменная индексирует. (Как правило, это индексирует, может быть определен для параметров метода от сигнатуры метода без доступа к информации о таблице локальной переменной.)
Устанавливает значение одной или более локальных переменных. Каждая переменная должна быть видимой в текущем индексе кода фрейма. Для примитивных значений тип значения должен соответствовать тип переменной точно. Для объектных значений должно быть расширяющееся ссылочное преобразование от типа значения до типа переменной, и тип переменной должен быть загружен.
Даже если информация о локальной переменной не доступна, значения могут быть установлены, если фронтэнд в состоянии решить, что корректная локальная переменная индексирует. (Как правило, это индексирует, может быть определен для параметров метода от сигнатуры метода без доступа к информации о таблице локальной переменной.)
Возвращает значение 'этой' ссылки для этого фрейма. Если метод фрейма будет статичным или собственным, то ответ будет содержать нулевую ссылку на объект.
Вытолкайте самые верхние стековые фреймы стека потока, до, и включая 'фрейм'. Поток должен быть приостановлен, чтобы выполнить эту команду. Самые верхние стековые фреймы отбрасываются, и стековый фрейм до 'фрейма' становится текущим фреймом. Стек операнда восстанавливается - значения аргументов добавляются назад и если вызывание не было invokestatic, objectref добавляется назад также. Счетчик команд виртуальной машины Java восстанавливается коду операции вызвать инструкции.
Начиная с версии 1.4 JDWP. Требует, чтобы canPopFrames возможность - видела CapabilitiesNew.
Несколько событий могут иметь место в установленный срок в целевом VM. Например, может быть больше чем один запрос контрольной точки на данное расположение, или Вы могли бы единственный шаг к тому же самому расположению как запрос контрольной точки. Эти события поставляются вместе как составное событие. Для однородности составное событие всегда используется, чтобы поставить события, даже если есть только одно событие, чтобы сообщить.
События, которые группируются в составном событии, ограничиваются следующими способами:
Только с другим потоком запускают события для того же самого потока:
Поток Запускает Событие
Только с другими смертельными событиями потока для того же самого потока:
Смертельное Событие потока
Только с другим class готовят события к тому же самому class:
Класс Готовит Событие
Только с другим class разгружают события для того же самого class:
Класс Разгружает Событие
Только с другими событиями контрольной точки доступа для того же самого доступа к полю:
Событие Контрольной точки доступа
Только с другими событиями контрольной точки модификации для той же самой полевой модификации:
Событие Контрольной точки модификации
Только с другим Монитором, с которым спорят, вводят события для того же самого объекта монитора:
Монитор Спорил, Вводят Событие
Только с другим Монитором боролся вводимые события за тот же самый объект монитора:
Монитор Спорил Вводимое Событие
Только с другим Монитором ожидают события того же самого объекта монитора:
Монитор Ожидает Событие
Только с другим Монитором ожидал события того же самого объекта монитора:
Монитор Ожидал Событие
Только с другим ExceptionEvents для того же самого исключения occurrance:
ExceptionEvent
Только с другими элементами этой группы, в том же самом расположении и в том же самом потоке:
Событие контрольной точки
Событие шага
Событие Записи метода
Событие Выхода метода
VM Запускают Событие, и Смертельное Событие VM автоматически сгенерированные события. Это означает, что их не должны требовать, используя EventRequest. Команда набора. Событие VM Start сигнализирует завершение инициализации VM. Событие VM Death сигнализирует завершение VM.If есть отладчик, соединенный в то время, когда автоматически сгенерированное событие имеет место, это отправляется от целевого VM. Автоматически сгенерированные события можно также требовать, используя EventRequest. Команда набора и таким образом многократные события того же самого вида события будут отправлены от целевого VM, когда событие будет иметь место. Автоматически сгенерированные события отправляются с requestID полем в конечном счете Набор данных к 0. Значение suspendPolicy поля в конечном счете Данные зависит от события. Поскольку автоматически сгенерированные VM Запускают Событие, значение suspendPolicy не определяется и является поэтому реализацией или определенной конфигурацией. В реализации солнца, например, suspendPolicy определяется как опция к агенту JDWP в разовом запуском. У автоматически сгенерированного Смертельного События VM будет набор suspendPolicy ни к ОДНОМУ.
Данные события
байт
suspendPolicy
Который распараллеливает где приостановлено этим составным событием?
интервал
события
События в наборе.
Повторные времена событий:
байт
eventKind
Селектор вида события
VMStart случая - если eventKind является JDWP.EventKind. VM_START:
Уведомление об инициализации целевого VM. Это событие получается прежде, чем основной поток запускается и прежде, чем любой код программы был выполнен. Прежде, чем это событие имеет место, существенное количество системного кода выполнилось, и много системных классов были загружены. Это событие всегда сгенерировано к установленному сроку VM, даже если не явно требуемый.
интервал
requestID
Запросите, чтобы генерировал событие (или 0, если это событие автоматически сгенерировано.
threadID
поток
Начальный поток
SingleStep случая - если eventKind является JDWP.EventKind. SINGLE_STEP:
Уведомление о завершении шага в целевом VM. Событие шага сгенерировано прежде, чем код в его расположении выполняется.
интервал
requestID
Запросите то сгенерированное событие
threadID
поток
Ступивший поток
расположение
расположение
Расположение ступило в
Контрольная точка случая - если eventKind является JDWP.EventKind. КОНТРОЛЬНАЯ ТОЧКА:
Уведомление о контрольной точке в целевом VM. Событие контрольной точки сгенерировано прежде, чем код в его расположении выполняется.
интервал
requestID
Запросите то сгенерированное событие
threadID
поток
Поток, которые поражают контрольную точку
расположение
расположение
Расположение совершало нападки
MethodEntry случая - если eventKind является JDWP.EventKind. METHOD_ENTRY:
Уведомление о вызове метода в целевом VM. Это событие сгенерировано прежде, чем любой код в вызванном методе выполнился. События записи метода сгенерированы и для собственных и для несобственных методов.
В некотором VMs события записи метода могут иметь место для определенного потока прежде, чем его поток запустится, событие имеет место, если методы вызывают как часть инициализации потока.
интервал
requestID
Запросите то сгенерированное событие
threadID
поток
Поток, который ввел метод
расположение
расположение
Начальное исполнимое расположение в методе.
MethodExit случая - если eventKind является JDWP.EventKind. METHOD_EXIT:
Уведомление о методе возвращается в целевом VM. Это событие сгенерировано после того, как весь код в методе выполнился, но расположение этого события является последним выполняемым расположением в методе. События выхода метода сгенерированы и для собственных и для несобственных методов. События выхода метода не сгенерированы, если метод завершается с выданным исключением.
интервал
requestID
Запросите то сгенерированное событие
threadID
поток
Поток, который выходил из метода
расположение
расположение
Расположение выхода
MethodExitWithReturnValue случая - если eventKind JDWP.EventKind.METHOD_EXIT_WITH_RETURN_VALUE:
Уведомление о методе возвращается в целевом VM. Это событие сгенерировано после того, как весь код в методе выполнился, но расположение этого события является последним выполняемым расположением в методе. События выхода метода сгенерированы и для собственных и для несобственных методов. События выхода метода не сгенерированы, если метод завершается с выданным исключением.
Начиная с версии 1.6 JDWP.
интервал
requestID
Запросите то сгенерированное событие
threadID
поток
Поток, который выходил из метода
расположение
расположение
Расположение выхода
значение
значение
Значение, которое будет возвращено методом
MonitorContendedEnter случая - если eventKind является JDWP.EventKind. MONITOR_CONTENDED_ENTER:
Уведомление, что поток в целевом VM пытается ввести монитор, который уже получается другим потоком. Требует, чтобы canRequestMonitorEvents возможность - видела CapabilitiesNew.
Начиная с версии 1.6 JDWP.
интервал
requestID
Запросите то сгенерированное событие
threadID
поток
Поток, который пытается ввести монитор
теговый-objectID
объект
Контролируйте ссылку на объект
расположение
расположение
Расположение монитора, с которым спорят, входит
MonitorContendedEntered случая - если eventKind является JDWP.EventKind. MONITOR_CONTENDED_ENTERED:
Уведомление о потоке в целевом VM вводит монитор после ожидания этого, чтобы быть выпущенным другим потоком. Требует, чтобы canRequestMonitorEvents возможность - видела CapabilitiesNew.
Начиная с версии 1.6 JDWP.
интервал
requestID
Запросите то сгенерированное событие
threadID
поток
Поток, который ввел монитор
теговый-objectID
объект
Контролируйте ссылку на объект
расположение
расположение
Расположение монитора, с которым спорят, входит
MonitorWait случая - если eventKind является JDWP.EventKind. MONITOR_WAIT:
Уведомление о потоке, собирающемся ожидать на объекте монитора. Требует, чтобы canRequestMonitorEvents возможность - видела CapabilitiesNew.
Начиная с версии 1.6 JDWP.
интервал
requestID
Запросите то сгенерированное событие
threadID
поток
Поток, который собирается ожидать
теговый-objectID
объект
Контролируйте ссылку на объект
расположение
расположение
Расположение, в котором произойдет ожидание
долго
тайм-аут
Распараллельте время ожидания в миллисекундах
MonitorWaited случая - если eventKind является JDWP.EventKind. MONITOR_WAITED:
Уведомление, что поток в целевом VM закончил ожидать на, Требует, чтобы canRequestMonitorEvents возможность - видела CapabilitiesNew объект монитора.
Начиная с версии 1.6 JDWP.
интервал
requestID
Запросите то сгенерированное событие
threadID
поток
Поток, который ожидал
теговый-objectID
объект
Контролируйте ссылку на объект
расположение
расположение
Расположение, в котором произошло ожидание
булев
timed_out
Истина если синхронизированный
Исключение случая - если eventKind является JDWP.EventKind. ИСКЛЮЧЕНИЕ:
Уведомление об исключении в целевом VM. Если исключение выдается от несобственного метода, событие исключения сгенерировано в расположении, где исключение выдается. Если исключение выдается от собственного метода, событие исключения сгенерировано в первом несобственном расположении, достигнутом после того, как исключение выдается.
интервал
requestID
Запросите то сгенерированное событие
threadID
поток
Поток с исключением
расположение
расположение
Расположение броска исключения (или сначала несобственное расположение после броска если брошено от собственного метода)
теговый-objectID
исключение
Выданное исключение
расположение
catchLocation
Расположение выгоды, или 0, если не пойманный. Исключение, как полагают, поймано, если в точке броска текущее расположение динамически включается в оператор попытки, который обрабатывает исключение. (См. спецификацию JVM для деталей). Если есть такой оператор попытки, расположение выгоды является первым расположением в соответствующем пункте выгоды.
Если есть собственные методы в стеке вызовов во время исключения, есть важные ограничения, чтобы отметить о возвращенном расположении выгоды. В таких случаях не возможно предсказать, будет ли исключение обработано некоторым собственным методом на стеке вызовов. Таким образом возможно, что исключения, которые рассматривают непойманным здесь, будут, фактически, обработаны собственным методом и не завершением причины целевого VM. Кроме того нельзя предположить, что расположение выгоды, возвращенное здесь, будет когда-либо достигаться потоком броска. Если есть собственный фрейм между текущим расположением и расположением выгоды, исключение могло бы быть обработано и очищено в том собственном методе вместо этого.
Отметьте, что компиляторы могут генерировать блоки try-catch в некоторых случаях, где они не являются явными в исходном коде; например, код, сгенерированный для synchronized и finally блоки могут содержать неявные блоки try-catch. Если такая неявно сгенерированная выгода попытки будет присутствовать на стеке вызовов во время броска, то исключение будут считать пойманным даже при том, что это, кажется, непоймано от исследования исходного кода.
ThreadStart случая - если eventKind является JDWP.EventKind. THREAD_START:
Уведомление о новом рабочем потоке в целевом VM. Новый поток может быть результатом звонка java.lang.Thread.start или результат присоединения нового потока к VM, хотя JNI. Уведомление сгенерировано новым потоком некоторое время прежде, чем его выполнение запустится. Из-за этой синхронизации возможно получить другие события для потока прежде, чем это событие будет получено. (Особенно, События Записи Метода и События Выхода Метода могли бы произойти во время инициализации потока. Для команды VirtualMachine AllThreads также возможно возвратить поток прежде, чем его поток запустится, событие получается.
Отметьте, что это событие не дает информации о создании объекта потока, который, возможно, произошел намного ранее, в зависимости от VM быть отлаженным.
интервал
requestID
Запросите то сгенерированное событие
threadID
поток
Запущенный поток
ThreadDeath случая - если eventKind является JDWP.EventKind. THREAD_DEATH:
Уведомление о завершенном потоке в целевом VM. Уведомление сгенерировано умирающим потоком прежде, чем это завершится. Из-за этой синхронизации для {@link VirtualMachine#allThreads} возможно возвратить этот поток после того, как это событие получается.
Отметьте, что это событие не дает информации о времени жизни объекта потока. Это может или не может быть скоро собрано в зависимости от того, какие ссылки существуют в целевом VM.
интервал
requestID
Запросите то сгенерированное событие
threadID
поток
Окончание потока
ClassPrepare случая - если eventKind является JDWP.EventKind. CLASS_PREPARE:
Уведомление о class готовится в целевом VM. См. спецификацию JVM для определения подготовки class. Класс готовится, события не сгенерированы для primtiive классов (например, java.lang. Целое число. ВВЕДИТЕ).
интервал
requestID
Запросите то сгенерированное событие
threadID
поток
Подготовка потока. В редких случаях это событие может иметь место в системном потоке отладчика в пределах целевого VM. Потоки отладчика принимают меры предосторожности, чтобы предотвратить эти события, но их нельзя избежать при некоторых условиях, специально для некоторых подклассов java.lang. Ошибка. Если событие было сгенерировано системным потоком отладчика, значение, возвращенное этим методом, является нулем, и если требуемые приостанавливают политику за событие, был EVENT_THREAD, все потоки будут приостановлены вместо этого, и составное событие приостанавливает политику, отразит это изменение.
Отметьте, что обсуждение выше не применяется к системным потокам, создаваемым к установленному сроку VM во время ее нормального (неотладка) работа.
ClassUnload случая - если eventKind является JDWP.EventKind. CLASS_UNLOAD:
Уведомление о class разгружается в целевом VM.
Есть серьезные ограничения на бэкэнд отладчика во время сборки "мусора", так разгрузитесь, информация значительно ограничивается.
интервал
requestID
Запросите то сгенерированное событие
строка
подпись
Введите подпись
FieldAccess случая - если eventKind является JDWP.EventKind. FIELD_ACCESS:
Уведомление о доступе к полю в целевом VM. Полевые модификации не считают доступами к полю. Требует, чтобы canWatchFieldAccess возможность - видела CapabilitiesNew.
Переданный поток является нулем, не является допустимым потоком или вышел.
INVALID_THREAD_GROUP
11
Недопустимая группа потока.
INVALID_PRIORITY
12
Недопустимый приоритет.
THREAD_NOT_SUSPENDED
13
Если указанный поток не был приостановлен событием.
THREAD_SUSPENDED
14
Поток уже приостанавливается.
THREAD_NOT_ALIVE
15
Поток не был запущен или теперь мертв.
INVALID_OBJECT
20
Если этот ссылочный тип был разгружен и собрал "мусор".
INVALID_CLASS
21
Недопустимый class.
CLASS_NOT_PREPARED
22
Класс был загружен, но еще не подготовлен.
INVALID_METHODID
23
Недопустимый метод.
INVALID_LOCATION
24
Недопустимое расположение.
INVALID_FIELDID
25
Недопустимое поле.
INVALID_FRAMEID
30
Недопустимый jframeID.
NO_MORE_FRAMES
31
Нет больше Java или фреймов JNI на стеке вызовов.
OPAQUE_FRAME
32
Информация о фрейме не доступна.
NOT_CURRENT_FRAME
33
Работа может только быть выполнена на текущем фрейме.
TYPE_MISMATCH
34
Переменная не является соответствующим типом для используемой функции.
INVALID_SLOT
35
Недопустимый слот.
КОПИЯ
40
Элемент уже устанавливается.
NOT_FOUND
41
Требуемый элемент, не найденный.
INVALID_MONITOR
50
Недопустимый монитор.
NOT_MONITOR_OWNER
51
Этому потоку не принадлежит монитор.
ПРЕРЫВАНИЕ
52
Вызов был прерван перед завершением.
INVALID_CLASS_FORMAT
60
Виртуальная машина, предпринятая, чтобы считать файл class и, решила, что файл уродлив или иначе не может быть интерпретирован как файл class.
CIRCULAR_CLASS_DEFINITION
61
Зацикливание было обнаружено, инициализируя class.
FAILS_VERIFICATION
62
Верификатор, обнаруженный, что файл class, хотя хорошо формирующийся, содержал своего рода внутреннюю несогласованность или проблему безопасности.
ADD_METHOD_NOT_IMPLEMENTED
63
Добавление методов не было реализовано.
SCHEMA_CHANGE_NOT_IMPLEMENTED
64
Изменение схемы не было реализовано.
INVALID_TYPESTATE
65
Состояние потока было изменено, и теперь непоследовательно.
HIERARCHY_CHANGE_NOT_IMPLEMENTED
66
Прямой суперкласс отличается для новой версии class, или набор непосредственно реализованных интерфейсов отличается, и canUnrestrictedlyRedefineClasses является ложью.
DELETE_METHOD_NOT_IMPLEMENTED
67
Новая версия class не объявляет метод, объявленный в старой версии class, и canUnrestrictedlyRedefineClasses является ложью.
UNSUPPORTED_VERSION
68
У файла class есть номер версии, не поддерживаемый этим VM.
NAMES_DONT_MATCH
69
Имя class, определенное в новом файле class, отличается от имени в старом объекте class.
CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED
70
У новой версии class есть различные модификаторы и и canUnrestrictedlyRedefineClasses является ложью.
METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED
71
У метода в новой версии class есть различные модификаторы, чем ее дубликат в старой версии class и и canUnrestrictedlyRedefineClasses является ложью.
NOT_IMPLEMENTED
99
Функциональность не реализуется в этой виртуальной машине.
NULL_POINTER
100
Недопустимый указатель.
ABSENT_INFORMATION
101
Требуемая информация не доступна.
INVALID_EVENT_TYPE
102
Указанный идентификатор типа события не распознается.
ILLEGAL_ARGUMENT
103
Недопустимый параметр.
OUT_OF_MEMORY
110
Функция должна была выделить память, и больше памяти не было доступно для выделения.
ACCESS_DENIED
111
Отладка не была включена в этой виртуальной машине. JVMTI не может использоваться.
VM_DEAD
112
Виртуальная машина не работает.
ВНУТРЕННИЙ
113
Произошла неожиданная внутренняя ошибка.
UNATTACHED_THREAD
115
Поток, используемый, чтобы вызвать эту функцию, не присоединен к виртуальной машине. Вызовы должны быть выполнены от присоединенных потоков.