Spec-Zone.ru › OpenJDK 17

Интерфейс StackFrame

Все суперинтерфейсы:
Locatable, Mirror
public interface StackFrame extends Mirror, Locatable
Состояние одного вызова метода в стеке вызовов потока. По мере выполнения потока, кадр стека вызовов помещается и извлекается из стека вызовов по мере вызова и возврата методов. Объект StackFrame отражает один такой кадр из целевой виртуальной машины в какой-то момент выполнения потока. Стек вызовов, тогда, просто список объектов StackFrame. Стек вызовов можно получить в любое время, когда поток приостановлен с помощью вызова ThreadReference.frames()

StackFrames предоставляют доступ к локальным переменным метода и их текущим значениям.

Срок жизни StackFrame очень ограничен. Он доступен только для приостановленных потоков и становится недействительным после возобновления потока.

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

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

С тех пор:
1.3

Краткое описание методов

Модификатор и тип Метод Описание
List<Value> getArgumentValues()
Возвращает значения всех аргументов в этом кадре.
Value getValue(LocalVariable variable)
Получает Value LocalVariable в этом кадре.
Map<LocalVariable,Value> getValues(List<? extends LocalVariable> variables)
Возвращает значения нескольких локальных переменных в этом кадре.
Location location()
Возвращает Location текущей инструкции в кадре.
void setValue(LocalVariable variable, Value value)
Устанавливает Value LocalVariable в этом кадре.
ObjectReference thisObject()
Возвращает значение 'this' для текущего кадра.
ThreadReference thread()
Возвращает поток, в котором выполняется метод этого кадра.
LocalVariable visibleVariableByName(String name)
Ищет LocalVariable, соответствующий заданному имени и видимый в текущем местоположении кадра.
List<LocalVariable> visibleVariables()
Возвращает список, содержащий каждый LocalVariable, к которому можно получить доступ из местоположения этого кадра.

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

toString, virtualMachine

Подробное описание методов

location

Location location()
Возвращает Location текущей инструкции в кадре. Метод, для которого был создан этот кадр, также доступен через возвращённую локацию. Для верхнего кадра в стеке эта локация определяет следующую выполняемую инструкцию. Для всех остальных кадров эта локация определяет инструкцию, вызвавшую метод следующего кадра. Если кадр представляет вызов метода нативного кода, возвращаемая локация указывает на класс и метод, но индекс кода не будет корректным (-1).
Указано в:
location в интерфейсе Locatable
Возвращает:
локацию Location текущей инструкции.
Выбрасывает:
InvalidStackFrameException - если этот кадр стека стал недействительным. После возобновления потока кадра кадр стека больше недействителен.

thread

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

thisObject

ObjectReference thisObject()
Возвращает значение 'this' для текущего кадра. ObjectReference для 'this' доступен только для не-нативных методов экземпляра.
Возвращает:
ObjectReference, или null, если кадр представляет нативный или статический метод.
Выбрасывает:
InvalidStackFrameException - если этот кадр стека стал недействительным. После возобновления потока кадра кадр стека больше недействителен.

visibleVariables

List<LocalVariable> visibleVariables() throws AbsentInformationException
Возвращает список, содержащий каждый LocalVariable, доступный из расположения текущего кадра.

Видимость основана на индексе кода текущей инструкции этого StackFrame. У каждой переменной есть диапазон индексов байткода, в котором она доступна. Если метод этого кадра стека совпадает с методом этой переменной и если индекс кода этого StackFrame находится в диапазоне байткода переменной, переменная видна.

Диапазон байткода переменной, как минимум, равен области видимости этой переменной, но может продолжаться за пределами области видимости в определённых случаях:

  • компилятор/виртуальная машина не сразу повторно используют слот переменной.
  • компилятор/виртуальная машина реализована таким образом, чтобы сообщать о расширенном диапазоне, который может получиться из вышеупомянутого.
Преимущество расширенного диапазона состоит в том, что переменные из недавно вышедших областей видимости могут оставаться доступными для проверки (это особенно полезно для индексов циклов). Если в результате расширений выше текущее расположение кадра находится в диапазоне нескольких локальных переменных с тем же именем, то для возвращаемого списка выбирается переменная с самым большим начальным диапазоном.
Возвращает:
список объектов LocalVariable, которые в данный момент видны; список будет пустым, если видимых переменных нет; в частности, кадры в нативных методах всегда возвращают список нулевой длины.
Выбрасывает:
AbsentInformationException - если для этого метода нет информации о локальных переменных.
InvalidStackFrameException - если этот кадр стека стал недействительным. После возобновления потока кадра кадр стека больше недействителен.
NativeMethodException - если текущий метод является нативным.

visibleVariableByName

LocalVariable visibleVariableByName(String name) throws AbsentInformationException
Находит LocalVariable, соответствующую заданному имени и видимую в текущем расположении кадра. См. visibleVariables() для получения дополнительной информации о видимости.
Параметры:
name - имя искомой переменной
Возвращает:
соответствующую LocalVariable, или null, если нет видимой переменной с заданным именем; кадры в нативных методах всегда возвращают null.
Выбрасывает:
AbsentInformationException - если для этого метода нет информации о локальных переменных.
InvalidStackFrameException - если этот кадр стека стал недействительным. После возобновления потока кадра кадр стека больше недействителен.
NativeMethodException - если текущий метод является нативным.

getValue

Value getValue(LocalVariable variable)
Получает Value LocalVariable в этом кадре. Переменная должна быть действительной для метода этого кадра и видимой в соответствии с правилами, описанными в visibleVariables().
Параметры:
variable - LocalVariable для доступа
Возвращает:
Value экземпляра поля.
Выбрасывает:
IllegalArgumentException - если переменная недействительна для метода этого кадра или невидима.
InvalidStackFrameException - если этот кадр стека стал недействительным. После возобновления потока кадра кадр стека больше недействителен.

getValues

Map<LocalVariable,Value> getValues(List<? extends LocalVariable> variables)
Возвращает значения нескольких локальных переменных в этом кадре. Каждая переменная должна быть действительной для метода этого кадра и видимой в соответствии с правилами, описанными в visibleVariables().
Параметры:
variables - список объектов LocalVariable для доступа
Возвращает:
отображение, связывающее каждую LocalVariable с её Value
Выбрасывает:
IllegalArgumentException - если какая-либо переменная недействительна для метода этого кадра или невидима.
InvalidStackFrameException - если этот кадр стека стал недействительным. После возобновления потока кадра кадр стека больше недействителен.

setValue

void setValue(LocalVariable variable, Value value) throws InvalidTypeException, ClassNotLoadedException
Устанавливает Value LocalVariable в этом кадре. Переменная должна быть действительной для метода этого кадра и видимой в соответствии с правилами, описанными в visibleVariables().

Значения объектов должны быть совместимы по присваиванию с типом переменной (это подразумевает, что тип переменной должен быть загружен через загрузчик класса содержащего класса). Примитивные значения должны быть либо совместимы по присваиванию с типом переменной, либо должны быть преобразуемы в тип переменной без потери информации. Смотрите раздел JLS 5.2 для получения дополнительной информации о совместимости по присваиванию.

Параметры:
variable - поле, содержащее запрашиваемое значение
value - новое присваиваемое значение
Выбрасывает:
IllegalArgumentException - если поле недействительно для класса этого объекта.
InvalidTypeException - если тип значения не совпадает с типом переменной.
ClassNotLoadedException - если тип переменной ещё не загружен через соответствующий загрузчик классов.
InvalidStackFrameException - если этот кадр стека стал недействительным. После возобновления потока кадра кадр стека больше недействителен.
VMCannotBeModifiedException - если VirtualMachine является только для чтения - см. VirtualMachine.canBeModified().

getArgumentValues

List<Value> getArgumentValues()
Возвращает значения всех аргументов в этом кадре. Значения возвращаются, даже если информация о локальных переменных отсутствует.
Возвращает:
список, содержащий объект Value для каждого аргумента этого кадра в порядке объявления аргументов. Если у метода, соответствующего этому кадру, нет аргументов, возвращается пустой список.
Выбрасывает:
InvalidStackFrameException - если этот кадр стека стал недействительным. После возобновления потока кадра кадр стека больше недействителен.
С:
1.6

© 1993, 2021, 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/17/docs/api/jdk.jdi/com/sun/jdi/StackFrame.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API