public interface StackFrame extends Mirror, Locatable
ThreadReference.frames()
StackFrames обеспечивают доступ к локальным переменным метода и их текущей стоимости.
Время жизни StackFrame очень ограничивается. Это доступно только для приостановленных потоков и становится недопустимым, как только его поток возобновляется.
Любой метод на StackFrame
который берет StackFrame
поскольку параметр может бросить VMDisconnectedException
если целевой VM разъединяется и VMDisconnectEvent
был или доступен, чтобы быть считанным из EventQueue
.
Любой метод на StackFrame
который берет StackFrame
поскольку параметр может бросить VMOutOfMemoryException
если целевой VM исчерпал память.
Модификатор и Тип | Метод и Описание |
---|---|
List<Value> |
getArgumentValues()
Возвращает значения всех параметров в этом фрейме.
|
Значение |
getValue(LocalVariable variable)
Добирается
Value из a LocalVariable в этом фрейме. |
Map<LocalVariable,Value> |
getValues(List<? extends LocalVariable> variables)
Возвращает значения многократных локальных переменных в этом фрейме.
|
Расположение |
location()
Возвраты
Location из текущей команды во фрейме. |
void |
setValue(LocalVariable variable, Value value)
Наборы
Value из a LocalVariable в этом фрейме. |
ObjectReference |
thisObject()
Возвращает значение 'этого' для текущего фрейма.
|
ThreadReference |
thread()
Возвращает поток, под которым работает метод этого фрейма.
|
LocalVariable |
visibleVariableByName(String name)
Находит a
LocalVariable это соответствует имя и видимо в текущем расположении фрейма. |
List<LocalVariable> |
visibleVariables()
Возвращает список, содержащий каждого
LocalVariable к этому можно получить доступ от расположения этого фрейма. |
toString, virtualMachine
Location location()
Location
из текущей команды во фрейме. К методу, для которого создавался этот фрейм, можно также получить доступ через возвращенное расположение. Для главного фрейма в стеке это расположение идентифицирует следующую инструкцию, которая будет выполняться. Для всех других фреймов это расположение идентифицирует инструкцию, которая заставила метод следующего фрейма быть вызванным. Если фрейм представляет собственный вызов метода, возвращенное расположение указывает на class и метод, но индекс кода не будет допустим (-1).location
в интерфейсе Locatable
Location
из текущей команды.InvalidStackFrameException
- если этот стековый фрейм стал недопустимым. Как только поток фрейма возобновляется, стековый фрейм больше не действителен.ThreadReference thread()
ThreadReference
который зеркально отражает поток фрейма.InvalidStackFrameException
- если этот стековый фрейм стал недопустимым. Как только поток фрейма возобновляется, стековый фрейм больше не действителен.ObjectReference thisObject()
ObjectReference
поскольку 'это' только доступно для несобственных методов экземпляра.ObjectReference
, или нуль, если фрейм представляет собственный или статический метод.InvalidStackFrameException
- если этот стековый фрейм стал недопустимым. Как только поток фрейма возобновляется, стековый фрейм больше не действителен.List<LocalVariable> visibleVariables() throws AbsentInformationException
LocalVariable
к этому можно получить доступ от расположения этого фрейма. Видимость основана на индексе кода текущей команды этого StackFrame. У каждой переменной есть диапазон индексов кода байта, в которых это доступно. Если метод этого стекового фрейма соответствует метод этой переменной и если индекс кода этого StackFrame в пределах диапазона кода байта переменной, переменная видима.
Диапазон кода байта переменной является, по крайней мере, столь же большим как контекст той переменной, но может продолжаться вне конца контекста при определенных обстоятельствах:
LocalVariable
в настоящий момент видимые объекты; список будет пуст, если не будет никаких видимых переменных; определенно, фреймы в собственных методах будут всегда возвращать список нулевой длиной.AbsentInformationException
- если нет никакой информации о локальной переменной для этого метода.InvalidStackFrameException
- если этот стековый фрейм стал недопустимым. Как только поток фрейма возобновляется, стековый фрейм больше не действителен.NativeMethodException
- если текущий метод является собственным.LocalVariable visibleVariableByName(String name) throws AbsentInformationException
LocalVariable
это соответствует имя и видимо в текущем расположении фрейма. См. visibleVariables()
для получения дополнительной информации о видимости.name
- имя переменной, чтобы найтиLocalVariable
, или нуль, если нет никакой видимой переменной с именем; фреймы в собственных методах будут всегда возвращать нуль.AbsentInformationException
- если нет никакой информации о локальной переменной для этого метода.InvalidStackFrameException
- если этот стековый фрейм стал недопустимым. Как только поток фрейма возобновляется, стековый фрейм больше не действителен.NativeMethodException
- если текущий метод является собственным.Value getValue(LocalVariable variable)
Value
из a LocalVariable
в этом фрейме. Переменная должна быть допустимой для метода этого фрейма и видимой согласно правилам, описанным в visibleVariables()
.variable
- LocalVariable
быть полученным доступValue
из поля экземпляра.IllegalArgumentException
- если переменная или недопустима для метода этого фрейма или не видима.InvalidStackFrameException
- если этот стековый фрейм стал недопустимым. Как только поток фрейма возобновляется, стековый фрейм больше не действителен.Map<LocalVariable,Value> getValues(List<? extends LocalVariable> variables)
visibleVariables()
.variables
- список LocalVariable
объекты, которые будут получены доступLocalVariable
с Value
IllegalArgumentException
- если какая-либо переменная или недопустима для метода этого фрейма или не видима.InvalidStackFrameException
- если этот стековый фрейм стал недопустимым. Как только поток фрейма возобновляется, стековый фрейм больше не действителен.void setValue(LocalVariable variable, Value value) throws InvalidTypeException, ClassNotLoadedException
Value
из a LocalVariable
в этом фрейме. Переменная должна быть допустимой для метода этого фрейма и видимой согласно правилам, описанным в visibleVariables()
. Объектные значения должны быть присвоением, совместимым с типом переменной (Это подразумевает, что тип переменной должен быть загружен через class включения загрузчик class). Примитивные значения должны быть или присвоением, совместимым с типом переменной, или должны быть конвертируемыми к типу переменной без потери информации. См. раздел JLS 5.2 для получения дополнительной информации о совместимости присвоения.
variable
- поле, содержащее требуемое значениеvalue
- новое значение, чтобы присвоитьсяIllegalArgumentException
- если поле не допустимо для class этого объекта.InvalidTypeException
- если тип значения не соответствует тип переменной.ClassNotLoadedException
- если тип переменной еще не был загружен через соответствующий загрузчик class.InvalidStackFrameException
- если этот стековый фрейм стал недопустимым. Как только поток фрейма возобновляется, стековый фрейм больше не действителен.VMCannotBeModifiedException
- если VirtualMachine только для чтения - см. VirtualMachine.canBeModified()
.List<Value> getArgumentValues()
Value
объект для каждого параметра этому фрейму, в порядке, в котором были объявлены параметры. Если у метода, соответствующего этому фрейму, нет никаких параметров, пустой список возвращается.InvalidStackFrameException
- если этот стековый фрейм стал недопустимым. Как только поток фрейма возобновляется, стековый фрейм больше не действителен.
Авторское право © 1999, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92