Интерфейс VirtualMachine

Все суперинтерфейсы:
Mirror
Все известные подинтерфейсы:
PathSearchingVirtualMachine
public interface VirtualMachine
extends Mirror

Виртуальная машина, нацеленная на отладку. Более точно, mirror представляющая составное состояние целевой ВМ. Все остальные зеркала связаны с экземпляром этого интерфейса. Доступ ко всем остальным зеркалам осуществляется непосредственно или косвенно через экземпляр этого интерфейса. Доступ к глобальным свойствам ВМ и управлению выполнением ВМ поддерживается непосредственно этим интерфейсом.

Экземпляры этого интерфейса создаются экземплярами Connector. Например, AttachingConnector подключается к целевой ВМ и возвращает зеркало её виртуальной машины. Подключающий компонент (Connector) обычно создает VirtualMachine, вызывая метод VirtualMachineManager's VirtualMachineManager.createVirtualMachine(Connection) createVirtualMachine(Connection).

Обратите внимание, что целевая ВМ, запущенная подключающим компонентом, не гарантированно будет стабильной до получения события VMStartEvent.

Любой метод в VirtualMachine, принимающий VirtualMachine, может выбросить исключение VMDisconnectedException, если целевая ВМ отключена, и событие VMDisconnectEvent было или доступно для чтения из EventQueue.

Любой метод в VirtualMachine, принимающий VirtualMachine, может выбросить исключение VMOutOfMemoryException, если в целевой ВМ закончилась память.

С тех пор как:
1.3

Поля

Модификатор и тип Поле Описание
static int TRACE_ALL

Все трассировки включены.

static int TRACE_EVENTS

Трассировка, включенная для обработки внутренних событий.

static int TRACE_NONE

Все трассировки отключены.

static int TRACE_OBJREFS

Включена трассировка для внутренней обработки ссылок на объекты.

static int TRACE_RECEIVES

Включена трассировка для пакетов JDWP, полученных от целевой ВМ.

static int TRACE_REFTYPES

Включена трассировка для внутренней обработки типов ссылок.

static int TRACE_SENDS

Включена трассировка для пакетов JDWP, отправленных целевой ВМ.

Методы

Модификатор и тип Метод Описание
List<ReferenceType> allClasses()

Возвращает все загруженные типы.

default List<ModuleReference> allModules()

Возвращает все модули.

List<ThreadReference> allThreads()

Возвращает список запущенных потоков.

boolean canAddMethod()

Определяет, поддерживает ли целевая виртуальная машина добавление методов при переопределении класса.

boolean canBeModified()

Определяет, является ли целевая виртуальная машина виртуальной машиной только для чтения.

boolean canForceEarlyReturn()

Определяет, поддерживает ли целевая виртуальная машина принудительное раннее возвращение метода.

boolean canGetBytecodes()

Определяет, поддерживает ли целевая виртуальная машина извлечение байткодов метода.

boolean canGetClassFileVersion()

Определяет, поддерживает ли целевая виртуальная машина чтение основных и второстепенных версий файла класса.

boolean canGetConstantPool()

Определяет, поддерживает ли целевая виртуальная машина получение информации о константном пуле класса.

boolean canGetCurrentContendedMonitor()

Определяет, поддерживает ли целевая виртуальная машина получение монитора, на котором в данный момент ожидает поток.

boolean canGetInstanceInfo()

Определяет, поддерживает ли целевая виртуальная машина доступ к экземплярам классов, количеству экземпляров и ссылающимся объектам.

boolean canGetMethodReturnValues()

Определяет, поддерживает ли целевая виртуальная машина включение возвращаемых значений в MethodExitEvent.

default boolean canGetModuleInfo()

Определяет, поддерживает ли целевая виртуальная машина получение информации о модулях.

boolean canGetMonitorFrameInfo()

Определяет, поддерживает ли целевая виртуальная машина получение информации о том, какой фрейм получил монитор.

boolean canGetMonitorInfo()

Определяет, поддерживает ли целевая виртуальная машина получение информации о мониторе для объекта.

boolean canGetOwnedMonitorInfo()

Определяет, поддерживает ли целевая виртуальная машина получение информации о мониторах, принадлежащих потоку.

boolean canGetSourceDebugExtension()

Определяет, поддерживает ли целевая виртуальная машина получение расширения отладки исходного кода.

boolean canGetSyntheticAttribute()

Определяет, поддерживает ли целевая виртуальная машина запрос синтетического атрибута метода или поля.

boolean canPopFrames()

Определяет, поддерживает ли целевая виртуальная машина извлечение фреймов из стека потока.

boolean canRedefineClasses()

Определяет, поддерживает ли целевая виртуальная машина любой уровень переопределения класса.

boolean canRequestMonitorEvents()

Определяет, поддерживает ли целевая виртуальная машина создание MonitorContendedEnterRequest.

boolean canRequestVMDeathEvent()

Определяет, поддерживает ли целевая виртуальная машина создание VMDeathRequest.

boolean canUnrestrictedlyRedefineClasses()

Определяет, поддерживает ли целевая виртуальная машина изменения при переопределении класса, которые в противном случае ограничены redefineClasses(java.util.Map<? extends com.sun.jdi.ReferenceType, byte[]>).

boolean canUseInstanceFilters()

Определяет, поддерживает ли целевая виртуальная машина фильтрацию событий по определенному объекту экземпляра.

boolean canUseSourceNameFilters()

Определяет, поддерживает ли целевая виртуальная машина фильтрацию событий подготовки класса по имени источника.

boolean canWatchFieldAccess()

Определяет, поддерживает ли целевая виртуальная машина точки останова для доступа к полю.

boolean canWatchFieldModification()

Определяет, поддерживает ли целевая виртуальная машина точки останова для изменения поля.

List<ReferenceType> classesByName​(String className)

Возвращает загруженные типы ссылок, соответствующие заданному имени.

String description()

Возвращает текстовую информацию о целевой виртуальной машине и поддерживаемой отладке.

void dispose()

Деактивирует этот виртуальный зеркальный образ машины.

EventQueue eventQueue()

Возвращает очередь событий для этой виртуальной машины.

EventRequestManager eventRequestManager()

Возвращает менеджер запросов событий для этой виртуальной машины.

void exit​(int exitCode)

Заставляет зеркальную виртуальную машину завершиться с указанным кодом ошибки.

String getDefaultStratum()

Возвращает стандартный слой этой виртуальной машины.

long[] instanceCounts​(List<? extends ReferenceType> refTypes)

Возвращает количество экземпляров каждого ReferenceType в списке 'refTypes'.

BooleanValue mirrorOf​(boolean value)

Создаёт BooleanValue для заданного значения.

ByteValue mirrorOf​(byte value)

Создаёт ByteValue для заданного значения.

CharValue mirrorOf​(char value)

Создаёт CharValue для заданного значения.

DoubleValue mirrorOf​(double value)

Создаёт DoubleValue для заданного значения.

FloatValue mirrorOf​(float value)

Создаёт FloatValue для заданного значения.

IntegerValue mirrorOf​(int value)

Создаёт IntegerValue для заданного значения.

LongValue mirrorOf​(long value)

Создаёт LongValue для заданного значения.

ShortValue mirrorOf​(short value)

Создаёт ShortValue для заданного значения.

StringReference mirrorOf​(String value)

Создаёт строку в этой виртуальной машине.

VoidValue mirrorOfVoid()

Создаёт VoidValue.

String name()

Возвращает имя целевой виртуальной машины, как указано в свойстве java.vm.name.

Process process()

Возвращает объект Process для этой виртуальной машины, если она запущена с помощью LaunchingConnector.

void redefineClasses​(Map<? extends ReferenceType,​byte[]> classToBytes)

Все указанные классы переопределяются в соответствии с предоставленными определениями.

void resume()

Продолжает выполнение приложения, работающего в этой виртуальной машине.

void setDebugTraceMode​(int traceFlags)

Отслеживает действия, выполняемые реализацией com.sun.jdi.

void setDefaultStratum​(String stratum)

Устанавливает стандартный слой этой виртуальной машины (см. Location для обсуждения слоёв).

void suspend()

Приостанавливает выполнение приложения, работающего в этой виртуальной машине.

List<ThreadGroupReference> topLevelThreadGroups()

Возвращает каждую группу потоков, у которой нет родительской группы.

String version()

Возвращает версию Java Runtime Environment в целевой виртуальной машине, как указано в свойстве java.version.

Методы, объявленные в интерфейсе com.sun.jdi.Mirror

toString, virtualMachine

Поля

TRACE_NONE

static final int TRACE_NONE

Весь отслеживание отключен.

См. также:
Значения константных полей

TRACE_SENDS

static final int TRACE_SENDS

Отслеживание включено для пакетов JDWP, отправленных целевой виртуальной машине.

См. также:
Значения константных полей

TRACE_RECEIVES

static final int TRACE_RECEIVES

Отслеживание включено для пакетов JDWP, полученных от целевой виртуальной машины.

См. также:
Значения константных полей

TRACE_EVENTS

static final int TRACE_EVENTS

Отслеживание включено для внутренней обработки событий.

См. также:
Значения константных полей

TRACE_REFTYPES

static final int TRACE_REFTYPES

Отслеживание включено для внутренней обработки ссылочных типов.

См. также:
Значения константных полей

TRACE_OBJREFS

static final int TRACE_OBJREFS

Отслеживание включено для внутренней обработки ссылок на объекты.

См. также:
Значения константных полей

TRACE_ALL

static final int TRACE_ALL

Весь отслеживание включен.

См. также:
Значения константных полей

Методы

allModules

default List<ModuleReference> allModules()

Возвращает все модули. Для каждого модуля в целевой виртуальной машине в возвращаемом списке будет помещён ModuleReference.

Не все целевые виртуальные машины поддерживают эту операцию. Используйте canGetModuleInfo(), чтобы определить, поддерживается ли операция.

Требования к реализации:
В реализации по умолчанию выбрасывается UnsupportedOperationException.
Возвращает:
список объектов ModuleReference, каждый из которых отражает модуль в целевой виртуальной машине.
Выбрасывает:
UnsupportedOperationException - если целевая виртуальная машина не поддерживает эту операцию.
С:
9

classesByName

List<ReferenceType> classesByName(String className)

Возвращает загруженные типы ссылок, которые соответствуют заданному имени. Имя должно быть полностью квалифицированным (например, java.lang.String). Возвращаемый список будет содержать ReferenceType для каждого класса или интерфейса, найденного с заданным именем. Поиск ограничен только загруженными классами; попытки загрузить класс с данным именем не предпринимается.

Возвращаемый список будет включать типы ссылок, загруженные по крайней мере до стадии подготовки, и типы (например, массивы), для которых подготовка не определена.

Параметры:
className - имя класса/интерфейса для поиска
Возвращает:
список объектов ReferenceType, каждый из которых отражает тип в целевой виртуальной машине с заданным именем.

allClasses

List<ReferenceType> allClasses()

Возвращает все загруженные типы. Для каждого загруженного типа в целевой виртуальной машине в возвращаемом списке будет помещен ReferenceType. Список будет включать типы ссылок, которые отражают классы, интерфейсы и массивы.

Возвращаемый список будет включать типы ссылок, загруженные по крайней мере до стадии подготовки, и типы (например, массивы), для которых подготовка не определена.

Возвращает:
список объектов ReferenceType, каждый из которых отражает загруженный тип в целевой виртуальной машине.

redefineClasses

void redefineClasses(Map<? extends ReferenceType,​byte[]> classToBytes)

Все указанные классы переопределяются в соответствии с предоставленными определениями. Метод в переопределённом классе называется «эквивалентным» (старой версии метода), если

  • их байткоды одинаковы, за исключением индексов в пуле констант, и
  • ссылочные константы равны.
В противном случае новый метод называется «неэквивалентным». Если в переопределённом методе есть активные стековые фреймы, эти активные фреймы продолжают выполнять байткоды предыдущей версии метода. Если новая версия такого метода неэквивалентна, то метод из одного из этих активных фреймов называется «устаревшим», и Method.isObsolete() вернёт true при вызове для одного из этих методов. Если требуется сбросить такой фрейм, используйте ThreadReference.popFrames(StackFrame) для удаления выполнения старого устаревшего метода из стека. Новые вызовы переопределённых методов всегда вызовут новые версии.

Эта функция не вызывает никакой инициализации, кроме той, которая произошла бы в соответствии с обычными семантиками JVM. Другими словами, переопределение класса не вызывает выполнения его инициализаторов. Значения существующих статических переменных останутся прежними до вызова. Однако полностью неинициализированные (новые) статические переменные будут присвоены своё значение по умолчанию.

Если переопределённый класс имеет экземпляры, то все эти экземпляры будут иметь поля, определённые переопределённым классом по завершении вызова. Существующие поля сохранят свои предыдущие значения. Любые новые поля будут иметь свои значения по умолчанию; никакие инициализаторы экземпляров или конструкторы не выполняются.

Потоки не нужно приостанавливать.

Эта функция не генерирует никаких событий.

Все точки останова в переопределённых классах удаляются.

Не все целевые виртуальные машины поддерживают эту операцию. Используйте canRedefineClasses(), чтобы определить, поддерживается ли операция. Используйте canAddMethod() для определения возможности добавления методов. Используйте canUnrestrictedlyRedefineClasses() для определения возможности изменения схемы, удаления методов, изменения иерархии классов и т. д.

Параметры:
classToBytes - Карта от ReferenceType к массиву байтов. Байты представляют новое определение класса и находятся в формате файла класса виртуальной машины Java.
Выбрасывает:
UnsupportedOperationException - если целевая виртуальная машина не поддерживает эту операцию.
  • Если canRedefineClasses() ложно, любой вызов этого метода выбросит это исключение.
  • Если canAddMethod() ложно, попытка добавить метод выбросит это исключение.
  • Если canUnrestrictedlyRedefineClasses() ложно, любая из следующих попыток выбросит это исключение
    • изменение схемы (полей)
    • изменение иерархии (суперклассы, интерфейсы)
    • удаление метода
    • изменение модификаторов класса
    • изменение модификаторов метода
    • изменение атрибутов класса NestHost или NestMembers
NoClassDefFoundError - если байты не соответствуют типу ссылки (имена не совпадают).
VerifyError - если «верификатор» обнаружит, что класс, хотя и правильно сформирован, содержит внутреннее противоречие или проблему безопасности.
ClassFormatError - если байты не представляют собой допустимый класс.
ClassCircularityError - если обнаружена цикличность во время инициализации класса.
UnsupportedClassVersionError - если номера основной и дополнительной версии в байтах не поддерживаются виртуальной машиной.
VMCannotBeModifiedException - если VirtualMachine является только для чтения — см. canBeModified().
С:
1.4
См. также:
Method.isObsolete(), ThreadReference.popFrames(com.sun.jdi.StackFrame), canRedefineClasses(), canAddMethod(), canUnrestrictedlyRedefineClasses()

allThreads

List<ThreadReference> allThreads()

Возвращает список запущенных в данный момент потоков. Для каждого работающего потока в целевой виртуальной машине в список помещается ThreadReference, который его отражает. Возвращаемый список содержит потоки, созданные с помощью java.lang.Thread, все нативные потоки, подключенные к целевой виртуальной машине через JNI, и системные потоки, созданные целевой виртуальной машиной. Объекты потоков, которые ещё не были запущены (см. Thread.start()) и объекты потоков, завершивших выполнение, не включаются в возвращаемый список.

Возвращает:
список объектов ThreadReference, по одному для каждого работающего потока в отражённой виртуальной машине.

suspend

void suspend()

Приостанавливает выполнение приложения, выполняющегося в этой виртуальной машине. Все потоки, работающие в данный момент, будут приостановлены.

В отличие от Thread.suspend(), учитываются как приостановки виртуальной машины, так и отдельных потоков. Перед тем как поток запустится снова, его нужно возобновить (через resume() или ThreadReference.resume()) столько раз, сколько его приостановили.

Выбрасывает:
VMCannotBeModifiedException - если VirtualMachine является только для чтения — см. canBeModified().

resume

void resume()

Продолжает выполнение приложения, работающего в этой виртуальной машине. Все потоки возобновляются, как описано в ThreadReference.resume().

Выбрасывает:
VMCannotBeModifiedException - если VirtualMachine является только для чтения — см. canBeModified().
См. также:
suspend()

topLevelThreadGroups

List<ThreadGroupReference> topLevelThreadGroups()

Возвращает каждую группу потоков, у которой нет родителя. Для каждой группы потоков верхнего уровня в возвращаемом списке помещается ThreadGroupReference.

Эта команда может использоваться в качестве первой стадии построения дерева (или деревьев) существующих групп потоков.

Возвращает:
список объектов ThreadGroupReference, по одному для каждой группы потоков верхнего уровня.

eventQueue

EventQueue eventQueue()

Возвращает очередь событий для этой виртуальной машины. У виртуальной машины есть только один объект EventQueue, этот метод будет возвращать тот же экземпляр каждый раз при вызове.

Возвращает:
объект EventQueue для этой виртуальной машины.
Выбрасывает:
VMCannotBeModifiedException - если VirtualMachine является только для чтения — см. canBeModified().

eventRequestManager

EventRequestManager eventRequestManager()

Возвращает менеджер запросов событий для этой виртуальной машины. EventRequestManager управляет событиями, которые пользователь может задавать, такими как точки останова. У виртуальной машины есть только один объект EventRequestManager, этот метод будет возвращать тот же экземпляр каждый раз при вызове.

Возвращает:
объект EventRequestManager для этой виртуальной машины.
Выбрасывает:
VMCannotBeModifiedException - если VirtualMachine является только для чтения — см. canBeModified().

mirrorOf

BooleanValue mirrorOf(boolean value)

Создаёт BooleanValue для данного значения. Это значение может использоваться для установки и сравнения со значением, извлечённым из переменной или поля в этой виртуальной машине.

Параметры:
value - булево значение, для которого нужно создать значение
Возвращает:
объект BooleanValue для данного булева значения.

mirrorOf

ByteValue mirrorOf(byte value)

Создаёт ByteValue для данного значения. Это значение может использоваться для установки и сравнения со значением, извлечённым из переменной или поля в этой виртуальной машине.

Параметры:
value - байт, для которого нужно создать значение
Возвращает:
значение ByteValue для данного байта.

mirrorOf

CharValue mirrorOf(char value)

Создаёт CharValue для данного значения. Это значение можно использовать для установки и сравнения со значением, полученным из переменной или поля в этой виртуальной машине.

Параметры:
value - символ, для которого нужно создать значение
Возвращает:
значение CharValue для данного символа.

mirrorOf

ShortValue mirrorOf(short value)

Создаёт ShortValue для данного значения. Это значение можно использовать для установки и сравнения со значением, полученным из переменной или поля в этой виртуальной машине.

Параметры:
value - короткое целое число, для которого нужно создать значение
Возвращает:
значение ShortValue для данного короткого целого числа.

mirrorOf

IntegerValue mirrorOf(int value)

Создаёт IntegerValue для данного значения. Это значение можно использовать для установки и сравнения со значением, полученным из переменной или поля в этой виртуальной машине.

Параметры:
value - целое число, для которого нужно создать значение
Возвращает:
значение IntegerValue для данного целого числа.

mirrorOf

LongValue mirrorOf(long value)

Создаёт LongValue для данного значения. Это значение можно использовать для установки и сравнения со значением, полученным из переменной или поля в этой виртуальной машине.

Параметры:
value - длинное целое число, для которого нужно создать значение
Возвращает:
значение LongValue для данного длинного целого числа.

mirrorOf

FloatValue mirrorOf(float value)

Создаёт FloatValue для данного значения. Это значение можно использовать для установки и сравнения со значением, полученным из переменной или поля в этой виртуальной машине.

Параметры:
value - число с плавающей запятой, для которого нужно создать значение
Возвращает:
значение FloatValue для данного числа с плавающей запятой.

mirrorOf

DoubleValue mirrorOf(double value)

Создаёт DoubleValue для данного значения. Это значение можно использовать для установки и сравнения со значением, полученным из переменной или поля в этой виртуальной машине.

Параметры:
value - число с двойной точностью, для которого нужно создать значение
Возвращает:
значение DoubleValue для данного числа с двойной точностью.

mirrorOf

StringReference mirrorOf(String value)

Создаёт строку в этой виртуальной машине. Созданная строка может использоваться для установки и сравнения со строковым значением, полученным из переменной или поля в этой виртуальной машине.

Параметры:
value - строка, которая должна быть создана
Возвращает:
ссылка StringReference, которая отражает вновь созданную строку в целевой виртуальной машине.
Исключения:
VMCannotBeModifiedException - если VirtualMachine является только для чтения - см. canBeModified().

mirrorOfVoid

VoidValue mirrorOfVoid()

Создаёт значение VoidValue. Это значение можно передать в ThreadReference.forceEarlyReturn(com.sun.jdi.Value), когда необходимо выйти из метода void.

Возвращает:
значение VoidValue.

process

Process process()

Возвращает объект Process для этой виртуальной машины, если она запущена с помощью LaunchingConnector

Возвращает:
объект Process для этой виртуальной машины или null, если она не была запущена с помощью LaunchingConnector.
Исключения:
VMCannotBeModifiedException - если VirtualMachine является только для чтения - см. canBeModified().

dispose

void dispose()

Деактивирует зеркало этой виртуальной машины. Канал связи с целевой виртуальной машиной закрывается, и целевая виртуальная машина готовится принять другое последующее подключение от этого отладчика или другого отладчика, включая следующие задачи:

  • Все запросы на события отменяются.
  • Все потоки, приостановленные с помощью suspend() или ThreadReference.suspend(), возобновляются столько раз, сколько необходимо для их выполнения.
  • Сбор мусора снова разрешен во всех случаях, когда он был отключён с помощью ObjectReference.disableCollection().
Любые текущие вызовы методов, выполняющиеся в целевой виртуальной машине, продолжаются после разъединения. По завершении любого такого вызова метода вызывающий поток продолжает выполнение с места, где он был первоначально остановлен.

Ресурсы, происходящие из этой VirtualMachine (ObjectReferences, ReferenceTypes и т. д.), станут недопустимыми.

exit

void exit(int exitCode)

Приводит к завершению зеркальной виртуальной машины с заданным кодом ошибки. Все ресурсы, связанные с этой VirtualMachine, освобождаются. Если зеркальная виртуальная машина удалённая, канал связи с ней закрывается. Ресурсы, происходящие из этой VirtualMachine (ObjectReferences, ReferenceTypes и т. д.), станут недопустимыми.

Потоки, выполняющиеся в зеркальной виртуальной машине, внезапно завершаются. Исключение смерти потока не выбрасывается, и блоки finally не выполняются.

Параметры:
exitCode - код выхода для целевой виртуальной машины. На некоторых платформах код выхода может быть усечён, например, до младших 8 бит.
Исключения:
VMCannotBeModifiedException - если VirtualMachine является только для чтения - см. canBeModified().

canWatchFieldModification

boolean canWatchFieldModification()

Определяет, поддерживает ли целевая виртуальная машина точки останова для изменения поля.

Возвращает:
true если функция поддерживается, false в противном случае.

canWatchFieldAccess

boolean canWatchFieldAccess()

Определяет, поддерживает ли целевая виртуальная машина точки останова для доступа к полю.

Возвращает:
true если функция поддерживается, false в противном случае.

canGetBytecodes

boolean canGetBytecodes()

Определяет, поддерживает ли целевая виртуальная машина получение байткодов метода.

Возвращает:
true если функция поддерживается, false в противном случае.

canGetSyntheticAttribute

boolean canGetSyntheticAttribute()

Определяет, поддерживает ли целевая виртуальная машина запрос синтетического атрибута метода или поля.

Возвращает:
true если функция поддерживается, false в противном случае.

canGetOwnedMonitorInfo

boolean canGetOwnedMonitorInfo()

Определяет, поддерживает ли целевая виртуальная машина получение мониторов, принадлежащих потоку.

Возвращает:
true если функция поддерживается, false в противном случае.

canGetCurrentContendedMonitor

boolean canGetCurrentContendedMonitor()

Определяет, поддерживает ли целевая виртуальная машина получение монитора, в ожидании которого находится поток в данный момент.

Возвращает:
true если функция поддерживается, false в противном случае.

canGetMonitorInfo

boolean canGetMonitorInfo()

Определяет, поддерживает ли целевая виртуальная машина получение информации о мониторе для объекта.

Возвращает:
true если функция поддерживается, false в противном случае.

canUseInstanceFilters

boolean canUseInstanceFilters()

Определяет, поддерживает ли целевая виртуальная машина фильтрацию событий по конкретному объекту-экземпляру. Например, см. BreakpointRequest.addInstanceFilter(com.sun.jdi.ObjectReference).

Возвращает:
true если функция поддерживается, false в противном случае.

canRedefineClasses

boolean canRedefineClasses()

Определяет, поддерживает ли целевая виртуальная машина любой уровень переопределения классов.

Возвращает:
true если функция поддерживается, false в противном случае.
С:
1.4
См. также:
redefineClasses(java.util.Map<? extends com.sun.jdi.ReferenceType, byte[]>)

canAddMethod

boolean canAddMethod()

Определяет, поддерживает ли целевая виртуальная машина добавление методов при переопределении классов.

Возвращает:
true если функция поддерживается, false в противном случае.
С:
1.4
См. также:
redefineClasses(java.util.Map<? extends com.sun.jdi.ReferenceType, byte[]>)

canUnrestrictedlyRedefineClasses

boolean canUnrestrictedlyRedefineClasses()

Определяет, поддерживает ли целевая виртуальная машина изменения при переопределении классов, которые в противном случае ограничены redefineClasses(java.util.Map<? extends com.sun.jdi.ReferenceType, byte[]>).

Возвращает:
true если функция поддерживается, false в противном случае.
С:
1.4
См. также:
redefineClasses(java.util.Map<? extends com.sun.jdi.ReferenceType, byte[]>)

canPopFrames

boolean canPopFrames()

Определяет, поддерживает ли целевая виртуальная машина извлечение кадров из стека потока.

Возвращает:
true если функция поддерживается, false в противном случае.
С:
1.4
См. также:
ThreadReference.popFrames(com.sun.jdi.StackFrame)

canGetSourceDebugExtension

boolean canGetSourceDebugExtension()

Определяет, поддерживает ли целевая виртуальная машина получение расширения отладки исходного кода.

Возвращает:
true если функция поддерживается, false в противном случае.
С:
1.4
См. также:
ReferenceType.sourceDebugExtension()

canRequestVMDeathEvent

boolean canRequestVMDeathEvent()

Определяет, поддерживает ли целевая виртуальная машина создание VMDeathRequest.

Возвращает:
true если функция поддерживается, false в противном случае.
С:
1.4
См. также:
EventRequestManager.createVMDeathRequest()

canGetMethodReturnValues

boolean canGetMethodReturnValues()

Определяет, поддерживает ли целевая виртуальная машина включение возвращаемых значений в MethodExitEvent.

Возвращает:
true если функция поддерживается, false в противном случае.
С:
1.6
См. также:
EventRequestManager.createMethodExitRequest()

canGetInstanceInfo

boolean canGetInstanceInfo()

Определяет, поддерживает ли целевая виртуальная машина доступ к экземплярам классов, количеству экземпляров и ссылающимся объектам.

Возвращает:
true если функция поддерживается, false в противном случае.
С:
1.6
См. также:
instanceCounts(java.util.List<? extends com.sun.jdi.ReferenceType>), ReferenceType.instances(long), ObjectReference.referringObjects(long)

canUseSourceNameFilters

boolean canUseSourceNameFilters()

Определяет, поддерживает ли целевая виртуальная машина фильтрацию событий подготовки классов по имени источника. См. ClassPrepareRequest.addSourceNameFilter(java.lang.String).

Возвращает:
true если функция поддерживается, false в противном случае.
С:
1.6

canForceEarlyReturn

boolean canForceEarlyReturn()

Определяет, поддерживает ли целевая виртуальная машина принудительное раннее возвращение из метода.

Возвращает:
true если функция поддерживается, false в противном случае.
С:
1.6
См. также:
ThreadReference.forceEarlyReturn(Value)

canBeModified

boolean canBeModified()

Определяет, является ли целевая виртуальная машина только для чтения. Если метод, который изменяет состояние виртуальной машины, вызывается в только для чтения виртуальной машине, то выбрасывается VMCannotBeModifiedException.

Возвращает:
true если функция поддерживается, false в противном случае.
С:
1.5

canRequestMonitorEvents

boolean canRequestMonitorEvents()

Определяет, поддерживает ли целевая виртуальная машина создание MonitorContendedEnterRequest, MonitorContendedEnteredRequest, MonitorWaitRequest и MonitorWaitedRequest.

Возвращает:
true если функция поддерживается, false в противном случае.
С:
1.6
См. также:
EventRequestManager.createMonitorContendedEnterRequest(), EventRequestManager.createMonitorContendedEnteredRequest(), EventRequestManager.createMonitorWaitRequest(), EventRequestManager.createMonitorWaitedRequest()

canGetMonitorFrameInfo

boolean canGetMonitorFrameInfo()

Определяет, поддерживает ли целевая виртуальная машина получение информации о том, какой фрейм получил монитор.

Возвращает:
true если функция поддерживается, false в противном случае.
С:
1.6
См. также:
ThreadReference.ownedMonitorsAndFrames()

canGetClassFileVersion

boolean canGetClassFileVersion()

Определяет, поддерживает ли целевая виртуальная машина чтение основных и второстепенных версий файла класса.

Возвращает:
true если функция поддерживается, false в противном случае.
С:
1.6
См. также:
ReferenceType.majorVersion(), ReferenceType.minorVersion()

canGetConstantPool

boolean canGetConstantPool()

Определяет, поддерживает ли целевая виртуальная машина получение информации о константном пуле класса.

Возвращает:
true если функция поддерживается, false в противном случае.
С:
1.6
См. также:
ReferenceType.constantPoolCount(), ReferenceType.constantPool()

canGetModuleInfo

default boolean canGetModuleInfo()

Определяет, поддерживает ли целевая виртуальная машина получение информации о модулях.

Требования к реализации:
Стандартная реализация возвращает false.
Возвращает:
true если функция поддерживается, false в противном случае
С:
9
См. также:
allModules(), ReferenceType.module(), ModuleReference

setDefaultStratum

void setDefaultStratum(String stratum)

Устанавливает стандартный страт виртуальной машины (см. Location для обсуждения стратов). Переопределяет стандартный страт для каждого класса, заданный в файле класса.

Влияет на запросы местоположения (например, Location.sourceName()) и границы строк, используемые при пошаговом выполнении.

Параметры:
stratum - страт для установки в качестве стандартного для виртуальной машины, или null для использования стандартных значений для каждого класса.
Исключение:
UnsupportedOperationException - если целевая виртуальная машина не поддерживает эту операцию.
С:
1.4

getDefaultStratum

String getDefaultStratum()

Возвращает стандартный страт этой виртуальной машины.

Возвращает:
null (что означает, что следует использовать стандартный страт для каждого класса - ReferenceType.defaultStratum() - если стандартный страт не был установлен с помощью setDefaultStratum(String).
С:
1.4
См. также:
setDefaultStratum(String), ReferenceType.defaultStratum()

instanceCounts

long[] instanceCounts(List<? extends ReferenceType> refTypes)

Возвращает количество экземпляров каждого ReferenceType в списке 'refTypes'. Учитываются только экземпляры, доступные для целей сборки мусора.

Не все целевые виртуальные машины поддерживают эту операцию. Используйте canGetInstanceInfo() для определения поддержки операции.

Параметры:
refTypes - список объектов ReferenceType для которых нужно получить количество экземпляров.
Возвращает:
массив long содержащий по одному элементу для каждого элемента в списке 'refTypes'. Элемент i массива содержит количество экземпляров в целевой виртуальной машине ReferenceType на позиции i в списке 'refTypes'. Если список 'refTypes' пустой, возвращается массив нулевой длины. Если ReferenceType в refTypes был собран мусором, для его количества экземпляров возвращается ноль.
Исключение:
UnsupportedOperationException - если целевая виртуальная машина не поддерживает эту операцию - см. canGetInstanceInfo()
NullPointerException - если список 'refTypes' равен null.
С:
1.6
См. также:
ReferenceType.instances(long), ObjectReference.referringObjects(long)

description

String description()

Возвращает текстовую информацию о целевой виртуальной машине и поддерживающем ее отладчике. Нет гарантии конкретного формата этой информации. Обычно эта строка содержит информацию о версии целевой виртуальной машины и интерфейсах отладчика. Более точная информация о версиях виртуальной машины и JDI доступна через version(), VirtualMachineManager.majorInterfaceVersion() и VirtualMachineManager.minorInterfaceVersion()

Возвращает:
описание.

version

String version()

Возвращает версию Java Runtime Environment в целевой виртуальной машине, как сообщается свойством java.version. Для получения версии интерфейса JDI используйте VirtualMachineManager.majorInterfaceVersion() и VirtualMachineManager.minorInterfaceVersion()

Возвращает:
версия целевой виртуальной машины.

name

String name()

Возвращает имя целевой виртуальной машины, как сообщается свойством java.vm.name.

Возвращает:
имя целевой виртуальной машины.

setDebugTraceMode

void setDebugTraceMode(int traceFlags)

Отслеживает действия, выполняемые реализацией com.sun.jdi. Вся информация об отслеживании выводится в System.err. Указанные флаги отслеживания используются для ограничения вывода только необходимой информацией. Указанные флаги действуют и соответствующее отслеживание будет продолжаться до следующего вызова этого метода.

Вывод зависит от реализации, и режим отслеживания может быть проигнорирован.

Параметры:
traceFlags - определяет, какие виды отслеживания включить.

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/jdk.jdi/com/sun/jdi/VirtualMachine.html

Spec-Zone .ru
спецификации, руководства, описания, API