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.registers # Returns an SBValueList.
    for regs in registerSet:
        if 'general purpose registers' in regs.name.lower():
            GPRs = regs
            break

    print('%s (number of children = %d):' % (GPRs.name, GPRs.num_children))
    for reg in GPRs:
        print('Name: ', reg.name, ' Value: ', reg.value)

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.

Nested Classes [hide private]
  children_access
A helper object that will lazily hand out thread for a process when supplied an index.
Instance Methods [hide private]
 
__repr__(self) source code
 
__init__(self, *args)
__init__(lldb::SBValue self) -> SBValue __init__(lldb::SBValue self, SBValue rhs) -> SBValue
source code
 
IsValid(self)
IsValid(SBValue self) -> bool
source code
 
__nonzero__(self) source code
 
__bool__(self) 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) -> char const *
source code
 
GetTypeName(self)
GetTypeName(SBValue self) -> char const *
source code
 
GetDisplayTypeName(self)
GetDisplayTypeName(SBValue self) -> char 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) -> char 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, *args)
GetSummary(SBValue self) -> char const GetSummary(SBValue self, SBStream stream, SBTypeSummaryOptions options) -> char const *
source code
 
GetObjectDescription(self)
GetObjectDescription(SBValue self) -> char const *
source code
 
GetTypeValidatorResult(self)
GetTypeValidatorResult(SBValue self) -> char 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
 
IsSyntheticChildrenGenerated(self)
IsSyntheticChildrenGenerated(SBValue self) -> bool
source code
 
SetSyntheticChildrenGenerated(self, *args)
SetSyntheticChildrenGenerated(SBValue self, bool arg2)
source code
 
GetLocation(self)
GetLocation(SBValue self) -> char const *
source code
 
SetValueFromCString(self, *args)
SetValueFromCString(SBValue self, char const * value_str) -> bool SetValueFromCString(SBValue self, char 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, char 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, char const * name, char const * expression) -> SBValue CreateValueFromExpression(SBValue self, char const * name, char const * expression, SBExpressionOptions options) -> SBValue
source code
 
CreateValueFromAddress(self, *args)
CreateValueFromAddress(SBValue self, char const * name, lldb::addr_t address, SBType type) -> SBValue
source code
 
CreateValueFromData(self, *args)
CreateValueFromData(SBValue self, char const * name, SBData data, SBType type) -> SBValue
source code
 
GetType(self)
GetType(SBValue self) -> SBType
source code
 
GetIndexOfChildWithName(self, *args)
GetIndexOfChildWithName(SBValue self, char const * name) -> uint32_t
source code
 
GetChildMemberWithName(self, *args)
GetChildMemberWithName(SBValue self, char const * name) -> SBValue GetChildMemberWithName(SBValue self, char const * name, lldb::DynamicValueType use_dynamic) -> SBValue
source code
 
GetValueForExpressionPath(self, *args)
GetValueForExpressionPath(SBValue self, char const * expr_path) -> SBValue
source code
 
GetDeclaration(self)
GetDeclaration(SBValue self) -> SBDeclaration
source code
 
MightHaveChildren(self)
MightHaveChildren(SBValue self) -> bool
source code
 
IsRuntimeSupportValue(self)
IsRuntimeSupportValue(SBValue self) -> bool
source code
 
GetNumChildren(self, *args)
GetNumChildren(SBValue self) -> uint32_t GetNumChildren(SBValue self, uint32_t max) -> 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
 
Persist(self)
Persist(SBValue self) -> SBValue
source code
 
GetExpressionPath(self, *args)
GetExpressionPath(SBValue self, SBStream description) -> bool GetExpressionPath(SBValue self, SBStream description, bool qualify_cxx_base_classes) -> bool
source code
 
EvaluateExpression(self, *args)
EvaluateExpression(SBValue self, char const * expr) -> SBValue EvaluateExpression(SBValue self, char const * expr, SBExpressionOptions options) -> SBValue EvaluateExpression(SBValue self, char const * expr, SBExpressionOptions options, char const * name) -> SBValue
source code
 
__get_dynamic__(self)
Helper function for the "SBValue.dynamic" property.
source code
 
get_child_access_object(self)
An accessor function that returns a children_access() object which allows lazy member variable access from a lldb.SBValue object.
source code
 
get_value_child_list(self)
An accessor function that returns a list() that contains all children in a lldb.SBValue object.
source code
 
__iter__(self)
Iterate over all child values of a lldb.SBValue object.
source code
 
__len__(self)
Return the number of child values of a lldb.SBValue object.
source code
 
get_expr_path(self) source code
 
synthetic_child_from_expression(self, name, expr, options=None) source code
 
synthetic_child_from_data(self, name, data, type) source code
 
synthetic_child_from_address(self, name, addr, type) 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=__eol_test)
Generator adaptor to support iteration for SBValue as a linked list.
source code
 
__str__(self)
__str__(SBValue self) -> PyObject *
source code
Class Variables [hide private]
  __swig_setmethods__ = {}
  __setattr__ = lambda self, name, value:
  __swig_getmethods__ = {}
  __getattr__ = lambda self, name:
  __swig_destroy__ = _lldb.delete_SBValue
  __del__ = lambda self:
Method Details [hide private]

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 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).

If you actually need an SBValue that represents the type pointed
to by a SBValue for which GetType().IsPointeeType() returns true,
regardless of the pointee type, you can do that with the SBValue.Dereference
method (or the equivalent deref property).

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 whether 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, char 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, char const * name) -> SBValue
GetChildMemberWithName(SBValue self, char 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 whether 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, char 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.

__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=__eol_test)

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