Package com.oracle.truffle.api.debug
Class DebugValue
java.lang.Object
com.oracle.truffle.api.debug.DebugValue
Represents a value accessed using the debugger API. Please note that values can become invalid
depending on the context in which they are used. For example stack values will only remain valid
as long as the current stack element is active. Heap values on the other hand remain valid. If a
value becomes invalid then setting or getting a value will throw an
IllegalStateException
. DebugValue
instances neither support equality or preserve identity.
Clients may access the debug value only on the execution thread where the suspended event of the
stack frame was created and notification received; access from other threads will throw
IllegalStateException
.
- Since:
- 0.17
-
Method Summary
Modifier and TypeMethodDescriptionabstract <T> T
Deprecated.boolean
Returns aboolean
representation of this value if it isboolean
.byte
asByte()
asDate()
Returns this value as date if it is adate
.double
asDouble()
Returns this value as duration if this object represents aduration
.float
asFloat()
final DebugValue
asInLanguage
(LanguageInfo language) Returns a debug value that presents itself as seen by the provided language.Returns this value as instant if it is aninstant
.int
asInt()
long
asLong()
short
asShort()
final String
asString()
Returns theString
value if this value represents a string.asTime()
Returns this value as time if it is atime
.Returns this value as timestamp if it represents atimezone
.final boolean
Returnstrue
if this value can be executed (represents a guest language function), elsefalse
.boolean
Indicates whether anotherDebugValue
is equal to this.final DebugValue
execute
(DebugValue... arguments) Executes the executable represented by this value.boolean
boolean
boolean
boolean
boolean
boolean
boolean
getArray()
Provides array elements when this value represents an array.Returns the entries iterator of the hash map.Returns the keys iterator of the hash map.long
Returns the number of hash map entries.getHashValue
(DebugValue key) Get value of a hash map for the specified key ornull
if the mapping for the specified key does not exist.getHashValueOrDefault
(DebugValue key, DebugValue defaultValue) Get value of a hash map for the specified key or return thedefaultValue
when the mapping for the specified key does not exist or is not readable.Returns the values iterator of the hash map.Returns the iterator value.Returns the next element in the iteration.final DebugValue
Get a meta-object of this value, if any.Returns the qualified name of a metaobject asString
.Returns the simple name of a metaobject asstring
.abstract String
getName()
Returns the name of this value as it is referred to from its origin.final LanguageInfo
Get the original language that created the value, if any.final Collection
<DebugValue> Provides properties representing an internal structure of this value.final DebugValue
getProperty
(String name) Get a property value by its name.getRawValue
(Class<? extends TruffleLanguage<?>> languageClass) Returns the underlying guest value object held by thisDebugValue
.final List
<Breakpoint> Get a list of breakpoints installed to the value's session and whoseroot instance
is this value.getScope()
Get the scope where this value is declared in.abstract DebuggerSession
Get the debugger session associated with this value.final SourceSection
Get a source location where this value is declared, if any.boolean
Returnstrue
if the value may have hash map entries.int
hashCode()
Provides hash code of the value.boolean
Returnstrue
if the value provides an iterator.boolean
abstract boolean
Returnstrue
if reading of this value can have side-effects, elsefalse
.abstract boolean
Returnstrue
if setting a new value can have side-effects, elsefalse
.final boolean
isArray()
Returnstrue
if this value represents an array,false
otherwise.boolean
Returnstrue
if and only if this value represents a boolean value.boolean
isDate()
Returnstrue
if this value represents a date, elsefalse
.boolean
Returnstrue
if this object represents a duration, elsefalse
.boolean
Returnstrue
if mapping for a given key is existing.boolean
Returnstrue
if mapping for the specified key does not exist and iswritable
.boolean
Returnstrue
if mapping for the specified key exists and iswritable
.boolean
Returnstrue
if mapping for the specified key exists and is readable.boolean
Returnstrue
if mapping for the specified key exists and is removable.boolean
boolean
Returnstrue
if this value represents an instant.abstract boolean
Returnstrue
if this value represents an internal variable or property,false
otherwise.boolean
Returnstrue
if this value represents an iterator.boolean
isMetaInstance
(DebugValue instance) Returnstrue
if the given instance is an instance of this value, elsefalse
.boolean
Returnstrue
if the value represents a metaobject.final boolean
isNull()
Test if the value represents 'null'.boolean
isNumber()
Returnstrue
if and only if this value represents a number.abstract boolean
Returnstrue
if this value can be read elsefalse
.boolean
isString()
Returnstrue
if and only if this value represents a string.boolean
isTime()
Returnstrue
if this value represents a time, elsefalse
.boolean
Returnstrue
if this object represents a timezone, elsefalse
.abstract boolean
Returnstrue
if this value can be written to, elsefalse
.void
putHashEntry
(DebugValue key, DebugValue value) Associates the specified value with the specified key in the hash map.boolean
Removes the mapping for a given key from the hash map.abstract void
set
(DebugValue value) Sets the value using anotherDebugValue
.abstract void
Deprecated.in 21.2.final String
Converts the value to a language-specific string representation.final String
toDisplayString
(boolean allowSideEffects) Converts the value to a language-specific string representation.toString()
Returns a string representation of the debug value.
-
Method Details
-
set
Sets the value using anotherDebugValue
. Throws anIllegalStateException
if the value is not writable, the passed value is not readable, this value or the passed value is invalid, or the guest language of the values do not match. UseDebugStackFrame.eval(String)
to evaluate values to be set.- Parameters:
value
- the value to set- Throws:
DebugException
- when guest language code throws an exception- Since:
- 0.17
-
set
Deprecated.Sets a primitive value. Strings and boxed Java primitive types are considered primitive. Throws anIllegalStateException
if the value is not writable andIllegalArgumentException
if the value is not primitive.- Parameters:
primitiveValue
- a primitive value to set- Throws:
DebugException
- when guest language code throws an exception- Since:
- 19.0
-
as
Deprecated.UsetoDisplayString()
instead.Converts the debug value into a Java type. Class conversions which are always supported:String
.class converts the value to its language specific string representation.Number
.class converts the value to a Number representation, if any.Boolean
.class converts the value to a Boolean representation, if any.
UnsupportedOperationException
is thrown. If the value is notreadable
then anIllegalStateException
is thrown.- Parameters:
clazz
- the type to convert to- Returns:
- the converted Java type, or
null
when the conversion was not possible. - Throws:
DebugException
- when guest language code throws an exception- Since:
- 0.17
-
getName
Returns the name of this value as it is referred to from its origin. If this value is originated from the stack it returns the name of the local variable. If the value was returned from another objects then it returns the name of the property or field it is contained in. If no name is availablenull
is returned.- Since:
- 0.17
-
isReadable
public abstract boolean isReadable()Returnstrue
if this value can be read elsefalse
.- Since:
- 0.17
-
hasReadSideEffects
public abstract boolean hasReadSideEffects()Returnstrue
if reading of this value can have side-effects, elsefalse
. Read has side-effects if it changes runtime state.- Since:
- 19.0
-
hasWriteSideEffects
public abstract boolean hasWriteSideEffects()Returnstrue
if setting a new value can have side-effects, elsefalse
. Write has side-effects if it changes runtime state besides this value.- Since:
- 19.0
-
isWritable
public abstract boolean isWritable()Returnstrue
if this value can be written to, elsefalse
.- Since:
- 0.26
-
isInternal
public abstract boolean isInternal()Returnstrue
if this value represents an internal variable or property,false
otherwise.Languages might have extra object properties or extra scope variables that are a part of the runtime, but do not correspond to anything what is an explicit part of the guest language representation. They may represent additional language artifacts, providing more in-depth information that can be valuable during debugging. Language implementors mark these variables as internal. An example of such internal values are internal slots in ECMAScript.
- Since:
- 0.26
-
getScope
Get the scope where this value is declared in. It returns a non-null value for local variables declared on a stack. It'snull
for object properties and other heap values.- Returns:
- the scope, or
null
when this value does not belong into any scope. - Since:
- 0.26
-
isNull
public final boolean isNull()Test if the value represents 'null'.- Throws:
DebugException
- when guest language code throws an exception- Since:
- 19.0
-
isString
public boolean isString()Returnstrue
if and only if this value represents a string.- Throws:
DebugException
- when guest language code throws an exception- Since:
- 20.1.0
-
asString
Returns theString
value if this value represents a string. This method returnsnull
otherwise.- Throws:
DebugException
- when guest language code throws an exception- Since:
- 19.0
-
fitsInInt
public boolean fitsInInt()- Throws:
DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
asInt
public int asInt()- Throws:
UnsupportedOperationException
- if this value could not be converted.DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
isBoolean
public boolean isBoolean()Returnstrue
if and only if this value represents a boolean value.- Throws:
DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
asBoolean
public boolean asBoolean()Returns aboolean
representation of this value if it isboolean
.- Throws:
UnsupportedOperationException
- if this value could not be converted.DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
isNumber
public boolean isNumber()Returnstrue
if and only if this value represents a number. The number value may be accessed asbyte
,short
,int
,long
,float
ordouble
value.- Throws:
DebugException
- when guest language code throws an exception- Since:
- 20.1.0
-
fitsInLong
public boolean fitsInLong()- Throws:
DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
asLong
public long asLong()- Throws:
UnsupportedOperationException
- if this value could not be converted.DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
fitsInBigInteger
public boolean fitsInBigInteger()- Throws:
DebugException
- when guest language code throws an exception- Since:
- 23.0.0
- See Also:
-
asBigInteger
- Throws:
UnsupportedOperationException
- if this value could not be converted.DebugException
- when guest language code throws an exception- Since:
- 23.0.0
- See Also:
-
fitsInDouble
public boolean fitsInDouble()- Throws:
DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
asDouble
public double asDouble()- Throws:
UnsupportedOperationException
- if this value could not be converted.DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
fitsInFloat
public boolean fitsInFloat()- Throws:
DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
asFloat
public float asFloat()- Throws:
UnsupportedOperationException
- if this value could not be converted.DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
fitsInByte
public boolean fitsInByte()- Throws:
DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
asByte
public byte asByte()- Throws:
UnsupportedOperationException
- if this value could not be converted.DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
fitsInShort
public boolean fitsInShort()- Throws:
DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
asShort
public short asShort()- Throws:
UnsupportedOperationException
- if this value could not be converted.DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
isDate
public boolean isDate()Returnstrue
if this value represents a date, elsefalse
. If this value is also atimezone
then the date is aware, otherwise it is naive.- Throws:
DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
asDate
Returns this value as date if it is adate
. The returned date is either aware if the value has atimezone
otherwise it is naive.- Throws:
UnsupportedOperationException
- if this value could not be converted.DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
isTime
public boolean isTime()Returnstrue
if this value represents a time, elsefalse
. If the value is also atimezone
then the time is aware, otherwise it is naive.- Throws:
DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
asTime
Returns this value as time if it is atime
. The returned time is either aware if the value has atimezone
otherwise it is naive.- Throws:
UnsupportedOperationException
- if this value could not be converted.DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
isInstant
public boolean isInstant()Returnstrue
if this value represents an instant. SeeInteropLibrary.isInstant(Object)
for detailed description.- Throws:
DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
asInstant
Returns this value as instant if it is aninstant
. SeeInteropLibrary.asInstant(Object)
for detailed description.- Throws:
UnsupportedOperationException
- if this value could not be converted.DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
isTimeZone
public boolean isTimeZone()Returnstrue
if this object represents a timezone, elsefalse
. SeeInteropLibrary.isTimeZone(Object)
for detailed description.- Throws:
UnsupportedOperationException
- if this value could not be converted.DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
asTimeZone
Returns this value as timestamp if it represents atimezone
.- Throws:
UnsupportedOperationException
- if this value could not be converted.DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
isDuration
public boolean isDuration()Returnstrue
if this object represents a duration, elsefalse
.- Throws:
UnsupportedOperationException
- if this value could not be converted.DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
asDuration
Returns this value as duration if this object represents aduration
.- Throws:
UnsupportedOperationException
- if this value could not be converted.DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
isMetaObject
public boolean isMetaObject()Returnstrue
if the value represents a metaobject. SeeInteropLibrary.isMetaObject(Object)
for detailed description.- Throws:
DebugException
- when guest language code throws an exception- Since:
- 20.1
- See Also:
-
getMetaQualifiedName
Returns the qualified name of a metaobject asString
. SeeInteropLibrary.getMetaQualifiedName(Object)
for detailed description.- Throws:
UnsupportedOperationException
- if and only ifisMetaObject()
returnsfalse
for the same value.DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
getMetaSimpleName
Returns the simple name of a metaobject asstring
. SeeInteropLibrary.getMetaSimpleName(Object)
for detailed description.- Throws:
UnsupportedOperationException
- if and only ifisMetaObject()
returnsfalse
for the same value.DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
isMetaInstance
Returnstrue
if the given instance is an instance of this value, elsefalse
. SeeInteropLibrary.isMetaInstance(Object, Object)
for detailed description.- Parameters:
instance
- the instance value to check.- Throws:
UnsupportedOperationException
- if and only ifisMetaObject()
returnsfalse
for the same value.DebugException
- when guest language code throws an exception- Since:
- 20.1.0
- See Also:
-
getRootInstanceBreakpoints
Get a list of breakpoints installed to the value's session and whoseroot instance
is this value.- Returns:
- a list of breakpoints with this value as root instance
- Since:
- 19.3.0
-
getProperties
Provides properties representing an internal structure of this value. The returned collection is not thread-safe. If the value is notreadable
thennull
is returned.- Returns:
- a collection of property values, or null when the value does not have any concept of properties.
- Throws:
DebugException
- when guest language code throws an exception- Since:
- 0.19
-
getProperty
Get a property value by its name.- Parameters:
name
- name of a property- Returns:
- the property value, or
null
if the property does not exist. - Throws:
DebugException
- when guest language code throws an exception- Since:
- 19.0
-
isArray
Returnstrue
if this value represents an array,false
otherwise.- Throws:
DebugException
- when guest language code throws an exception- Since:
- 0.19
-
getArray
Provides array elements when this value represents an array. To test if this value represents an array, checkisArray()
.- Returns:
- a list of array elements, or
null
when the value does not represent an array. - Throws:
DebugException
- when guest language code throws an exception- Since:
- 0.19
-
getRawValue
Returns the underlying guest value object held by thisDebugValue
. This method is permitted only if the guest language class is available. This is the case if you want to utilize the Debugger API directly from within a guest language, or if you are an instrument bound/dependent on a specific language. This method is opposite toDebugScope.convertRawValue(Class, Object)
where a raw guest language value is wrapped in a DebugValue.- Parameters:
languageClass
- the Truffle language class for a given guest language- Returns:
- the guest language object or null if the language differs from the language that
created the underlying
DebugValue
- Since:
- 20.1
-
toDisplayString
Converts the value to a language-specific string representation. Is the same astoDisplayString(true)
.- Since:
- 20.1
- See Also:
-
toDisplayString
Converts the value to a language-specific string representation.- Parameters:
allowSideEffects
- whether side-effects are allowed in the production of the string.- Throws:
DebugException
- Since:
- 20.1
-
getMetaObject
Get a meta-object of this value, if any. The meta-object represents a description of the value, reveals it's kind and it's features. SeeInteropLibrary.getMetaObject(Object)
for detailed description.- Returns:
- a value representing the meta-object, or
null
- Throws:
DebugException
- when guest language code throws an exception- Since:
- 0.22
-
getSourceLocation
Get a source location where this value is declared, if any.- Returns:
- a source location of the object, or
null
- Throws:
DebugException
- when guest language code throws an exception- Since:
- 0.22
-
canExecute
Returnstrue
if this value can be executed (represents a guest language function), elsefalse
.- Throws:
DebugException
- Since:
- 19.0
-
execute
Executes the executable represented by this value.- Parameters:
arguments
- Arguments passed to the executable- Returns:
- the result of the execution
- Throws:
DebugException
- when guest language code throws an exception- Since:
- 19.0
- See Also:
-
hasIterator
Returnstrue
if the value provides an iterator. For details seeInteropLibrary.hasIterator(Object)
.- Throws:
DebugException
- if guest language code throws an exception.- Since:
- 21.2
- See Also:
-
getIterator
Returns the iterator value. The return value is always aniterator
. For details seeInteropLibrary.getIterator(Object)
.- Throws:
DebugException
- ifhasIterator()
returnsfalse
or guest language code throws an exception.- Since:
- 21.3
- See Also:
-
isIterator
Returnstrue
if this value represents an iterator. For details seeInteropLibrary.isIterator(Object)
.- Throws:
DebugException
- if guest language code throws an exception.- Since:
- 21.2
- See Also:
-
hasIteratorNextElement
Returnstrue
if the valueis an iterator
which has more elements, elsefalse
. For details seeInteropLibrary.hasIteratorNextElement(Object)
.- Throws:
DebugException
- ifisIterator()
returnsfalse
or guest language code throws an exception.- Since:
- 21.2
- See Also:
-
getIteratorNextElement
Returns the next element in the iteration. When the underlying data structure is modified thegetIteratorNextElement()
may throw theNoSuchElementException
despite thehasIteratorNextElement()
returnedtrue
.- Throws:
DebugException
- ifisIterator()
returnsfalse
or when the underlying iterator element exists but is not readable, or guest language code throws an exception.NoSuchElementException
- if the iteration has no more elements.- Since:
- 21.2
- See Also:
-
hasHashEntries
Returnstrue
if the value may have hash map entries. For details seeInteropLibrary.hasHashEntries(Object)
.- Throws:
DebugException
- if guest language code throws an exception.- Since:
- 21.2
- See Also:
-
getHashSize
Returns the number of hash map entries.- Throws:
DebugException
- ifhasHashEntries()
returnsfalse
or guest language code throws an exception.- Since:
- 21.2
- See Also:
-
isHashEntryReadable
Returnstrue
if mapping for the specified key exists and is readable. If thekey
is obtained fromgetHashEntriesIterator()
orgetHashKeysIterator()
, it returns the same value askey.
isReadable()
. For details seeInteropLibrary.isHashEntryReadable(Object, Object)
.- Throws:
DebugException
- if guest language code throws an exception.- Since:
- 21.2
- See Also:
-
getHashValue
Get value of a hash map for the specified key ornull
if the mapping for the specified key does not exist. The returned value, if any, iswritable
if and only ifisHashEntryWritable(DebugValue)
returns true for the entry key.- Throws:
DebugException
- if the value has nohash entries
, or guest language code throws an exception.- Since:
- 21.2
- See Also:
-
getHashValueOrDefault
public DebugValue getHashValueOrDefault(DebugValue key, DebugValue defaultValue) throws DebugException Get value of a hash map for the specified key or return thedefaultValue
when the mapping for the specified key does not exist or is not readable.- Throws:
DebugException
- if the hash map does not support reading at all, or guest language code throws an exception.- Since:
- 21.2
- See Also:
-
isHashEntryModifiable
Returnstrue
if mapping for the specified key exists and iswritable
. If the corresponding value is obtained fromgetHashValue(DebugValue)
or fromgetHashEntriesIterator()
, then it returns the same value asvalue.
isWritable()
. For details seeInteropLibrary.isHashEntryModifiable(Object, Object)
.- Throws:
DebugException
- if guest language code throws an exception.- Since:
- 21.2
- See Also:
-
isHashEntryInsertable
Returnstrue
if mapping for the specified key does not exist and iswritable
. For details seeInteropLibrary.isHashEntryInsertable(Object, Object)
.- Throws:
DebugException
- if guest language code throws an exception.- Since:
- 21.2
- See Also:
-
isHashEntryWritable
- Throws:
DebugException
- if guest language code throws an exception.- Since:
- 21.2
-
putHashEntry
Associates the specified value with the specified key in the hash map. Putting the entry is allowed if is existing andmodifiable
, or not existing andinsertable
.- Throws:
DebugException
- if the hash map does not support writing at all, or mapping for the specified key is notmodifiable
norinsertable
, or the provided key type or value type is not allowed to be written, or guest language code throws an exception.- Since:
- 21.2
-
isHashEntryRemovable
Returnstrue
if mapping for the specified key exists and is removable. For details seeInteropLibrary.isHashEntryRemovable(Object, Object)
.- Throws:
DebugException
- if guest language code throws an exception.- Since:
- 21.2
- See Also:
-
removeHashEntry
Removes the mapping for a given key from the hash map. Mapping removing is allowed if it isremovable
.- Returns:
true
if the mapping was successfully removed,false
if mapping for a given key does not exist.- Throws:
DebugException
- if the value does not have anyhash entries
or if mapping for specified keyexists
but cannot be removed.- Since:
- 21.2
- See Also:
-
isHashEntryExisting
Returnstrue
if mapping for a given key is existing. For details seeInteropLibrary.isHashEntryExisting(Object, Object)
.- Throws:
DebugException
- if guest language code throws an exception.- Since:
- 21.2
-
getHashEntriesIterator
Returns the entries iterator of the hash map. The return value is always aniterator
ofarray
elements. The first array element is a key, the second array element is the associated value. Array elements returned by the iterator may be modifiable.Set
of the elements updates the hash map.- Throws:
DebugException
- ifhasHashEntries()
returnsfalse
, or if guest language code throws an exception.- Since:
- 21.2
-
getHashKeysIterator
Returns the keys iterator of the hash map. The return value is always aniterator
.- Throws:
DebugException
- ifhasHashEntries()
returnsfalse
, or if guest language code throws an exception.- Since:
- 21.2
-
getHashValuesIterator
Returns the values iterator of the hash map. The return value is always aniterator
.- Throws:
DebugException
- ifhasHashEntries()
returnsfalse
, or if guest language code throws an exception.- Since:
- 21.2
-
hashCode
Provides hash code of the value.- Overrides:
hashCode
in classObject
- Returns:
identity hash code
of the guest object, if the objecthas identity
.- Throws:
DebugException
- when guest language code throws an exception- Since:
- 21.2
-
equals
Indicates whether anotherDebugValue
is equal to this. TwoDebugValue
objects are equal if and only if their guest objects areidentical
.- Overrides:
equals
in classObject
- Throws:
DebugException
- when guest language code throws an exception- Since:
- 21.2
-
getOriginalLanguage
Get the original language that created the value, if any. This method will returnnull
for values representing a primitive value, or objects that are not associated with any language.- Returns:
- the language, or
null
when no language can be identified as the creator of the value. - Throws:
DebugException
- when guest language code throws an exception- Since:
- 0.27
-
asInLanguage
Returns a debug value that presents itself as seen by the provided language. The language affects the output oftoDisplayString()
,getMetaObject()
,getSourceLocation()
and other methods that provide various representations of the value. Theoriginal language
of the returned value remains the same as of this value.- Parameters:
language
- a language to get the value representation of- Returns:
- the value as represented in the language
- Since:
- 0.27
-
getSession
Get the debugger session associated with this value.- Since:
- 21.2
-
toString
Returns a string representation of the debug value.
-
toDisplayString()
instead.