Интерфейс 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() | Определяет, поддерживает ли целевая виртуальная машина включение возвращаемых значений в |
default boolean | canGetModuleInfo() | Определяет, поддерживает ли целевая виртуальная машина получение информации о модулях. |
boolean | canGetMonitorFrameInfo() | Определяет, поддерживает ли целевая виртуальная машина получение информации о том, какой фрейм получил монитор. |
boolean | canGetMonitorInfo() | Определяет, поддерживает ли целевая виртуальная машина получение информации о мониторе для объекта. |
boolean | canGetOwnedMonitorInfo() | Определяет, поддерживает ли целевая виртуальная машина получение информации о мониторах, принадлежащих потоку. |
boolean | canGetSourceDebugExtension() | Определяет, поддерживает ли целевая виртуальная машина получение расширения отладки исходного кода. |
boolean | canGetSyntheticAttribute() | Определяет, поддерживает ли целевая виртуальная машина запрос синтетического атрибута метода или поля. |
boolean | canPopFrames() | Определяет, поддерживает ли целевая виртуальная машина извлечение фреймов из стека потока. |
boolean | canRedefineClasses() | Определяет, поддерживает ли целевая виртуальная машина любой уровень переопределения класса. |
boolean | canRequestMonitorEvents() | Определяет, поддерживает ли целевая виртуальная машина создание |
boolean | canRequestVMDeathEvent() | Определяет, поддерживает ли целевая виртуальная машина создание |
boolean | canUnrestrictedlyRedefineClasses() | Определяет, поддерживает ли целевая виртуальная машина изменения при переопределении класса, которые в противном случае ограничены |
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) | Создаёт |
ByteValue | mirrorOf(byte value) | Создаёт |
CharValue | mirrorOf(char value) | Создаёт |
DoubleValue | mirrorOf(double value) | Создаёт |
FloatValue | mirrorOf(float value) | Создаёт |
IntegerValue | mirrorOf(int value) | Создаёт |
LongValue | mirrorOf(long value) | Создаёт |
ShortValue | mirrorOf(short value) | Создаёт |
StringReference | mirrorOf(String value) | Создаёт строку в этой виртуальной машине. |
VoidValue | mirrorOfVoid() | Создаёт |
String | name() | Возвращает имя целевой виртуальной машины, как указано в свойстве |
Process | process() | Возвращает объект |
void | redefineClasses(Map<? extends ReferenceType,byte[]> classToBytes) | Все указанные классы переопределяются в соответствии с предоставленными определениями. |
void | resume() | Продолжает выполнение приложения, работающего в этой виртуальной машине. |
void | setDebugTraceMode(int traceFlags) | Отслеживает действия, выполняемые реализацией com.sun.jdi. |
void | setDefaultStratum(String stratum) | Устанавливает стандартный слой этой виртуальной машины (см. |
void | suspend() | Приостанавливает выполнение приложения, работающего в этой виртуальной машине. |
List<ThreadGroupReference> | topLevelThreadGroups() | Возвращает каждую группу потоков, у которой нет родительской группы. |
String | version() | Возвращает версию Java Runtime Environment в целевой виртуальной машине, как указано в свойстве |
Методы, объявленные в интерфейсе 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