Package lldb :: Class SBValue
[hide private]
[frames] | no frames]

Class SBValue

source code



Represents the value of a variable, a register, or an expression.

SBValue supports iteration through its child, which in turn is represented
as an SBValue.  For example, we can get the general purpose registers of a
frame as an SBValue, and iterate through all the registers,

    registerSet = frame.GetRegisters() # Returns an SBValueList.
    for regs in registerSet:
        if 'general purpose registers' in regs.getName().lower():
            GPRs = regs
            break

    print '%s (number of children = %d):' % (GPRs.GetName(), GPRs.GetNumChildren())
    for reg in GPRs:
        print 'Name: ', reg.GetName(), ' Value: ', reg.GetValue()

produces the output:

General Purpose Registers (number of children = 21):
Name:  rax  Value:  0x0000000100000c5c
Name:  rbx  Value:  0x0000000000000000
Name:  rcx  Value:  0x00007fff5fbffec0
Name:  rdx  Value:  0x00007fff5fbffeb8
Name:  rdi  Value:  0x0000000000000001
Name:  rsi  Value:  0x00007fff5fbffea8
Name:  rbp  Value:  0x00007fff5fbffe80
Name:  rsp  Value:  0x00007fff5fbffe60
Name:  r8  Value:  0x0000000008668682
Name:  r9  Value:  0x0000000000000000
Name:  r10  Value:  0x0000000000001200
Name:  r11  Value:  0x0000000000000206
Name:  r12  Value:  0x0000000000000000
Name:  r13  Value:  0x0000000000000000
Name:  r14  Value:  0x0000000000000000
Name:  r15  Value:  0x0000000000000000
Name:  rip  Value:  0x0000000100000dae
Name:  rflags  Value:  0x0000000000000206
Name:  cs  Value:  0x0000000000000027
Name:  fs  Value:  0x0000000000000010
Name:  gs  Value:  0x0000000000000048

See also linked_list_iter() for another perspective on how to iterate through an
SBValue instance which interprets the value object as representing the head of a
linked list.

Instance Methods [hide private]
 
__setattr__(self, name, value)
x.__setattr__('name', value) <==> x.name = value
source code
 
__getattr__(self, name) source code
 
__repr__(self)
repr(x)
source code
 
__iter__(self) source code
 
__len__(self) source code
 
__eol_test__(val)
Default function for end of list test takes an SBValue object.
source code
 
linked_list_iter(self, next_item_name, end_of_list_test=<function __eol_test__ at 0x1b106e0>)
Generator adaptor to support iteration for SBValue as a linked list.
source code
 
__init__(self, *args)
__init__(lldb::SBValue self) -> SBValue __init__(lldb::SBValue self, SBValue rhs) -> SBValue
source code
 
__swig_destroy__(...)
delete_SBValue(SBValue self)
 
__del__(self) source code
 
__nonzero__(self) source code
 
IsValid(self)
IsValid(SBValue self) -> bool
source code
 
Clear(self)
Clear(SBValue self)
source code
 
GetError(self)
GetError(SBValue self) -> SBError
source code
 
GetID(self)
GetID(SBValue self) -> lldb::user_id_t
source code
 
GetName(self)
GetName(SBValue self) -> str const *
source code
 
GetTypeName(self)
GetTypeName(SBValue self) -> str const *
source code
 
GetByteSize(self)
GetByteSize(SBValue self) -> size_t
source code
 
IsInScope(self)
IsInScope(SBValue self) -> bool
source code
 
GetFormat(self)
GetFormat(SBValue self) -> lldb::Format
source code
 
SetFormat(self, *args)
SetFormat(SBValue self, lldb::Format format)
source code
 
GetValue(self)
GetValue(SBValue self) -> str const *
source code
 
GetValueAsSigned(self, *args)
GetValueAsSigned(SBValue self, SBError error, int64_t fail_value=0) -> int64_t GetValueAsSigned(SBValue self, SBError error) -> int64_t GetValueAsSigned(SBValue self, int64_t fail_value=0) -> int64_t GetValueAsSigned(SBValue self) -> int64_t
source code
 
GetValueAsUnsigned(self, *args)
GetValueAsUnsigned(SBValue self, SBError error, uint64_t fail_value=0) -> uint64_t GetValueAsUnsigned(SBValue self, SBError error) -> uint64_t GetValueAsUnsigned(SBValue self, uint64_t fail_value=0) -> uint64_t GetValueAsUnsigned(SBValue self) -> uint64_t
source code
 
GetValueType(self)
GetValueType(SBValue self) -> lldb::ValueType
source code
 
GetValueDidChange(self)
GetValueDidChange(SBValue self) -> bool
source code
 
GetSummary(self)
GetSummary(SBValue self) -> str const *
source code
 
GetObjectDescription(self)
GetObjectDescription(SBValue self) -> str const *
source code
 
GetDynamicValue(self, *args)
GetDynamicValue(SBValue self, lldb::DynamicValueType use_dynamic) -> SBValue
source code
 
GetStaticValue(self)
GetStaticValue(SBValue self) -> SBValue
source code
 
GetNonSyntheticValue(self)
GetNonSyntheticValue(SBValue self) -> SBValue
source code
 
GetPreferDynamicValue(self)
GetPreferDynamicValue(SBValue self) -> lldb::DynamicValueType
source code
 
SetPreferDynamicValue(self, *args)
SetPreferDynamicValue(SBValue self, lldb::DynamicValueType use_dynamic)
source code
 
GetPreferSyntheticValue(self)
GetPreferSyntheticValue(SBValue self) -> bool
source code
 
SetPreferSyntheticValue(self, *args)
SetPreferSyntheticValue(SBValue self, bool use_synthetic)
source code
 
IsDynamic(self)
IsDynamic(SBValue self) -> bool
source code
 
IsSynthetic(self)
IsSynthetic(SBValue self) -> bool
source code
 
GetLocation(self)
GetLocation(SBValue self) -> str const *
source code
 
SetValueFromCString(self, *args)
SetValueFromCString(SBValue self, str const * value_str) -> bool SetValueFromCString(SBValue self, str const * value_str, SBError error) -> bool
source code
 
GetTypeFormat(self)
GetTypeFormat(SBValue self) -> SBTypeFormat
source code
 
GetTypeSummary(self)
GetTypeSummary(SBValue self) -> SBTypeSummary
source code
 
GetTypeFilter(self)
GetTypeFilter(SBValue self) -> SBTypeFilter
source code
 
GetTypeSynthetic(self)
GetTypeSynthetic(SBValue self) -> SBTypeSynthetic
source code
 
GetChildAtIndex(self, *args)
GetChildAtIndex(SBValue self, uint32_t idx) -> SBValue GetChildAtIndex(SBValue self, uint32_t idx, lldb::DynamicValueType use_dynamic, bool can_create_synthetic) -> SBValue
source code
 
CreateChildAtOffset(self, *args)
CreateChildAtOffset(SBValue self, str const * name, uint32_t offset, SBType type) -> SBValue
source code
 
Cast(self, *args)
Cast(SBValue self, SBType type) -> SBValue
source code
 
CreateValueFromExpression(self, *args)
CreateValueFromExpression(SBValue self, str const * name, str const * expression) -> SBValue CreateValueFromExpression(SBValue self, str const * name, str const * expression, SBExpressionOptions options) -> SBValue
source code
 
CreateValueFromAddress(self, *args)
CreateValueFromAddress(SBValue self, str const * name, lldb::addr_t address, SBType type) -> SBValue
source code
 
CreateValueFromData(self, *args)
CreateValueFromData(SBValue self, str const * name, SBData data, SBType type) -> SBValue
source code
 
GetType(self)
GetType(SBValue self) -> SBType
source code
 
GetIndexOfChildWithName(self, *args)
GetIndexOfChildWithName(SBValue self, str const * name) -> uint32_t
source code
 
GetChildMemberWithName(self, *args)
GetChildMemberWithName(SBValue self, str const * name) -> SBValue GetChildMemberWithName(SBValue self, str const * name, lldb::DynamicValueType use_dynamic) -> SBValue
source code
 
GetValueForExpressionPath(self, *args)
GetValueForExpressionPath(SBValue self, str const * expr_path) -> SBValue
source code
 
GetDeclaration(self)
GetDeclaration(SBValue self) -> SBDeclaration
source code
 
MightHaveChildren(self)
MightHaveChildren(SBValue self) -> bool
source code
 
GetNumChildren(self)
GetNumChildren(SBValue self) -> uint32_t
source code
 
GetOpaqueType(self)
GetOpaqueType(SBValue self) -> void *
source code
 
Dereference(self)
Dereference(SBValue self) -> SBValue
source code
 
AddressOf(self)
AddressOf(SBValue self) -> SBValue
source code
 
TypeIsPointerType(self)
TypeIsPointerType(SBValue self) -> bool
source code
 
GetTarget(self)
GetTarget(SBValue self) -> SBTarget
source code
 
GetProcess(self)
GetProcess(SBValue self) -> SBProcess
source code
 
GetThread(self)
GetThread(SBValue self) -> SBThread
source code
 
GetFrame(self)
GetFrame(SBValue self) -> SBFrame
source code
 
Watch(self, *args)
Watch(SBValue self, bool resolve_location, bool read, bool write, SBError error) -> SBWatchpoint
source code
 
WatchPointee(self, *args)
WatchPointee(SBValue self, bool resolve_location, bool read, bool write, SBError error) -> SBWatchpoint
source code
 
GetDescription(self, *args)
GetDescription(SBValue self, SBStream description) -> bool
source code
 
GetPointeeData(self, item_idx=0, item_count=1)
GetPointeeData(SBValue self, uint32_t item_idx=0, uint32_t item_count=1) -> SBData GetPointeeData(SBValue self, uint32_t item_idx=0) -> SBData GetPointeeData(SBValue self) -> SBData
source code
 
GetData(self)
GetData(SBValue self) -> SBData
source code
 
SetData(self, *args)
SetData(SBValue self, SBData data, SBError error) -> bool
source code
 
GetLoadAddress(self)
GetLoadAddress(SBValue self) -> lldb::addr_t
source code
 
GetAddress(self)
GetAddress(SBValue self) -> SBAddress
source code
 
GetExpressionPath(self, *args)
GetExpressionPath(SBValue self, SBStream description) -> bool GetExpressionPath(SBValue self, SBStream description, bool qualify_cxx_base_classes) -> bool
source code
 
__get_dynamic__(self)
Helper function for the "SBValue.dynamic" property.
source code
 
get_expr_path(self) source code
 
__str__(self)
__str__(SBValue self) -> PyObject *
source code

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __sizeof__, __subclasshook__

Class Variables [hide private]
  __swig_setmethods__ = {}
  __swig_getmethods__ = {}
Properties [hide private]
  addr
A read only property that returns an lldb.SBAddress that represents the address of this value if it is in memory.
  address_of
A read only property that returns an lldb.SBValue that represents the address-of this value.
  changed
A read only property that returns a boolean value that indicates if this value has changed since it was last updated.
  data
A read only property that returns an lldb object (lldb.SBData) that represents the bytes that make up the value for this object.
  deref
A read only property that returns an lldb.SBValue that is created by dereferencing this value.
  description
A read only property that returns the language-specific description of this value as a string
  dynamic
A read only property that returns an lldb.SBValue that is created by finding the dynamic type of this value.
  error
A read only property that returns the lldb.SBError that represents the error from the last time the variable value was calculated.
  format
A read/write property that gets/sets the format used for lldb.SBValue().GetValue() for this value.
  frame
A read only property that returns the lldb.SBFrame that this value is associated with, the returned value might be invalid and should be tested.
  is_in_scope
A read only property that returns a boolean value that indicates whether this value is currently lexically in scope.
  load_addr
A read only property that returns the load address of this value as an integer.
  location
A read only property that returns the location of this value as a string.
  name
A read only property that returns the name of this value as a string.
  num_children
A read only property that returns the number of child lldb.SBValues that this value has.
  path
A read only property that returns the expression path that one can use to reach this value in an expression.
  process
A read only property that returns the lldb.SBProcess that this value is associated with, the returned value might be invalid and should be tested.
  signed
A read only property that returns the value of this SBValue as a signed integer.
  size
A read only property that returns the size in bytes of this value.
  summary
A read only property that returns the summary for this value as a string
  target
A read only property that returns the lldb.SBTarget that this value is associated with.
  thread
A read only property that returns the lldb.SBThread that this value is associated with, the returned value might be invalid and should be tested.
  type
A read only property that returns a lldb.SBType object that represents the type for this value.
  unsigned
A read only property that returns the value of this SBValue as an usigned integer.
  value
A read/write property that gets/sets value from a string.
  value_type
A read only property that returns an lldb enumeration value (see enumerations that start with "lldb.eValueType") that represents the type of this value (local, argument, global, register, etc.).

Inherited from object: __class__

Method Details [hide private]

__setattr__(self, name, value)

source code 

x.__setattr__('name', value) <==> x.name = value

Overrides: object.__setattr__
(inherited documentation)

__repr__(self)
(Representation operator)

source code 

repr(x)

Overrides: object.__repr__
(inherited documentation)

__eol_test__(val)

source code 

Default function for end of list test takes an SBValue object.

Return True if val is invalid or it corresponds to a null pointer. Otherwise, return False.

linked_list_iter(self, next_item_name, end_of_list_test=<function __eol_test__ at 0x1b106e0>)

source code 
Generator adaptor to support iteration for SBValue as a linked list.

linked_list_iter() is a special purpose iterator to treat the SBValue as
the head of a list data structure, where you specify the child member
name which points to the next item on the list and you specify the
end-of-list test function which takes an SBValue for an item and returns
True if EOL is reached and False if not.

linked_list_iter() also detects infinite loop and bails out early.

The end_of_list_test arg, if omitted, defaults to the __eol_test__
function above.

For example,

# Get Frame #0.
...

# Get variable 'task_head'.
task_head = frame0.FindVariable('task_head')
...

for t in task_head.linked_list_iter('next'):
    print t

__init__(self, *args)
(Constructor)

source code 

__init__(lldb::SBValue self) -> SBValue __init__(lldb::SBValue self, SBValue rhs) -> SBValue

Overrides: object.__init__

GetChildAtIndex(self, *args)

source code 

GetChildAtIndex(SBValue self, uint32_t idx) -> SBValue
GetChildAtIndex(SBValue self, uint32_t idx, lldb::DynamicValueType use_dynamic, bool can_create_synthetic) -> SBValue

Get a child value by index from a value.

Structs, unions, classes, arrays and and pointers have child
values that can be access by index. 

Structs and unions access child members using a zero based index
for each child member. For

Classes reserve the first indexes for base classes that have 
members (empty base classes are omitted), and all members of the
current class will then follow the base classes. 

Pointers differ depending on what they point to. If the pointer
points to a simple type, the child at index zero
is the only child value available, unless synthetic_allowed 
is true, in which case the pointer will be used as an array
and can create 'synthetic' child values using positive or 
negative indexes. If the pointer points to an aggregate type 
(an array, class, union, struct), then the pointee is 
transparently skipped and any children are going to be the indexes
of the child values within the aggregate type. For example if
we have a 'Point' type and we have a SBValue that contains a
pointer to a 'Point' type, then the child at index zero will be
the 'x' member, and the child at index 1 will be the 'y' member
(the child at index zero won't be a 'Point' instance).

Arrays have a preset number of children that can be accessed by
index and will returns invalid child values for indexes that are
out of bounds unless the synthetic_allowed is true. In this
case the array can create 'synthetic' child values for indexes 
that aren't in the array bounds using positive or negative 
indexes.

@param[in] idx
    The index of the child value to get

@param[in] use_dynamic
    An enumeration that specifies wether to get dynamic values,
    and also if the target can be run to figure out the dynamic
    type of the child value.

@param[in] synthetic_allowed
    If true, then allow child values to be created by index
    for pointers and arrays for indexes that normally wouldn't
    be allowed.

@return
    A new SBValue object that represents the child member value.

GetIndexOfChildWithName(self, *args)

source code 

GetIndexOfChildWithName(SBValue self, str const * name) -> uint32_t

Returns the child member index.

Matches children of this object only and will match base classes and
member names if this is a clang typed object.

@param[in] name
    The name of the child value to get

@return
    An index to the child member value.

GetChildMemberWithName(self, *args)

source code 

GetChildMemberWithName(SBValue self, str const * name) -> SBValue
GetChildMemberWithName(SBValue self, str const * name, lldb::DynamicValueType use_dynamic) -> SBValue

Returns the child member value.

Matches child members of this object and child members of any base
classes.

@param[in] name
    The name of the child value to get

@param[in] use_dynamic
    An enumeration that specifies wether to get dynamic values,
    and also if the target can be run to figure out the dynamic
    type of the child value.

@return
    A new SBValue object that represents the child member value.

GetValueForExpressionPath(self, *args)

source code 

GetValueForExpressionPath(SBValue self, str const * expr_path) -> SBValue

Expands nested expressions like .a->b[0].c[1]->d.

Watch(self, *args)

source code 

Watch(SBValue self, bool resolve_location, bool read, bool write, SBError error) -> SBWatchpoint

Find and watch a variable. It returns an SBWatchpoint, which may be invalid.

WatchPointee(self, *args)

source code 

WatchPointee(SBValue self, bool resolve_location, bool read, bool write, SBError error) -> SBWatchpoint

Find and watch the location pointed to by a variable. It returns an SBWatchpoint, which may be invalid.

GetPointeeData(self, item_idx=0, item_count=1)

source code 

GetPointeeData(SBValue self, uint32_t item_idx=0, uint32_t item_count=1) -> SBData
GetPointeeData(SBValue self, uint32_t item_idx=0) -> SBData
GetPointeeData(SBValue self) -> SBData

   Get an SBData wrapping what this SBValue points to.
   
   This method will dereference the current SBValue, if its
   data type is a T* or T[], and extract item_count elements
   of type T from it, copying their contents in an SBData. 
   
   @param[in] item_idx
       The index of the first item to retrieve. For an array
       this is equivalent to array[item_idx], for a pointer
       to *(pointer + item_idx). In either case, the measurement
       unit for item_idx is the sizeof(T) rather than the byte
   
   @param[in] item_count
       How many items should be copied into the output. By default
       only one item is copied, but more can be asked for.
   
   @return
       An SBData with the contents of the copied items, on success.
       An empty SBData otherwise.

GetData(self)

source code 

GetData(SBValue self) -> SBData

   Get an SBData wrapping the contents of this SBValue.
   
   This method will read the contents of this object in memory
   and copy them into an SBData for future use. 
   
   @return
       An SBData with the contents of this SBValue, on success.
       An empty SBData otherwise.

GetExpressionPath(self, *args)

source code 

GetExpressionPath(SBValue self, SBStream description) -> bool GetExpressionPath(SBValue self, SBStream description, bool qualify_cxx_base_classes) -> bool

Returns an expression path for this value.

__str__(self)
(Informal representation operator)

source code 

__str__(SBValue self) -> PyObject *

Overrides: object.__str__

Property Details [hide private]

addr

A read only property that returns an lldb.SBAddress that represents the address of this value if it is in memory.

Get Method:
GetAddress(self) - GetAddress(SBValue self) -> SBAddress

address_of

A read only property that returns an lldb.SBValue that represents the address-of this value.

Get Method:
AddressOf(self) - AddressOf(SBValue self) -> SBValue

changed

A read only property that returns a boolean value that indicates if this value has changed since it was last updated.

Get Method:
GetValueDidChange(self) - GetValueDidChange(SBValue self) -> bool

data

A read only property that returns an lldb object (lldb.SBData) that represents the bytes that make up the value for this object.

Get Method:
GetData(self) - GetData(SBValue self) -> SBData

deref

A read only property that returns an lldb.SBValue that is created by dereferencing this value.

Get Method:
Dereference(self) - Dereference(SBValue self) -> SBValue

description

A read only property that returns the language-specific description of this value as a string

Get Method:
GetObjectDescription(self) - GetObjectDescription(SBValue self) -> str const *

dynamic

A read only property that returns an lldb.SBValue that is created by finding the dynamic type of this value.

Get Method:
__get_dynamic__(self) - Helper function for the "SBValue.dynamic" property.

error

A read only property that returns the lldb.SBError that represents the error from the last time the variable value was calculated.

Get Method:
GetError(self) - GetError(SBValue self) -> SBError

format

A read/write property that gets/sets the format used for lldb.SBValue().GetValue() for this value. See enumerations that start with "lldb.eFormat".

Get Method:
GetName(self) - GetName(SBValue self) -> str const *
Set Method:
SetFormat(self, *args) - SetFormat(SBValue self, lldb::Format format)

frame

A read only property that returns the lldb.SBFrame that this value is associated with, the returned value might be invalid and should be tested.

Get Method:
GetFrame(self) - GetFrame(SBValue self) -> SBFrame

is_in_scope

A read only property that returns a boolean value that indicates whether this value is currently lexically in scope.

Get Method:
IsInScope(self) - IsInScope(SBValue self) -> bool

load_addr

A read only property that returns the load address of this value as an integer.

Get Method:
GetLoadAddress(self) - GetLoadAddress(SBValue self) -> lldb::addr_t

location

A read only property that returns the location of this value as a string.

Get Method:
GetLocation(self) - GetLocation(SBValue self) -> str const *

name

A read only property that returns the name of this value as a string.

Get Method:
GetName(self) - GetName(SBValue self) -> str const *

num_children

A read only property that returns the number of child lldb.SBValues that this value has.

Get Method:
GetNumChildren(self) - GetNumChildren(SBValue self) -> uint32_t

path

A read only property that returns the expression path that one can use to reach this value in an expression.

Get Method:
get_expr_path(self)

process

A read only property that returns the lldb.SBProcess that this value is associated with, the returned value might be invalid and should be tested.

Get Method:
GetProcess(self) - GetProcess(SBValue self) -> SBProcess

signed

A read only property that returns the value of this SBValue as a signed integer.

Get Method:
GetValueAsSigned(self, *args) - GetValueAsSigned(SBValue self, SBError error, int64_t fail_value=0) -> int64_t GetValueAsSigned(SBValue self, SBError error) -> int64_t GetValueAsSigned(SBValue self, int64_t fail_value=0) -> int64_t GetValueAsSigned(SBValue self) -> int64_t

size

A read only property that returns the size in bytes of this value.

Get Method:
GetByteSize(self) - GetByteSize(SBValue self) -> size_t

summary

A read only property that returns the summary for this value as a string

Get Method:
GetSummary(self) - GetSummary(SBValue self) -> str const *

target

A read only property that returns the lldb.SBTarget that this value is associated with.

Get Method:
GetTarget(self) - GetTarget(SBValue self) -> SBTarget

thread

A read only property that returns the lldb.SBThread that this value is associated with, the returned value might be invalid and should be tested.

Get Method:
GetThread(self) - GetThread(SBValue self) -> SBThread

type

A read only property that returns a lldb.SBType object that represents the type for this value.

Get Method:
GetType(self) - GetType(SBValue self) -> SBType

unsigned

A read only property that returns the value of this SBValue as an usigned integer.

Get Method:
GetValueAsUnsigned(self, *args) - GetValueAsUnsigned(SBValue self, SBError error, uint64_t fail_value=0) -> uint64_t GetValueAsUnsigned(SBValue self, SBError error) -> uint64_t GetValueAsUnsigned(SBValue self, uint64_t fail_value=0) -> uint64_t GetValueAsUnsigned(SBValue self) -> uint64_t

value

A read/write property that gets/sets value from a string.

Get Method:
GetValue(self) - GetValue(SBValue self) -> str const *
Set Method:
SetValueFromCString(self, *args) - SetValueFromCString(SBValue self, str const * value_str) -> bool SetValueFromCString(SBValue self, str const * value_str, SBError error) -> bool

value_type

A read only property that returns an lldb enumeration value (see enumerations that start with "lldb.eValueType") that represents the type of this value (local, argument, global, register, etc.).

Get Method:
GetValueType(self) - GetValueType(SBValue self) -> lldb::ValueType