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

Class SBFunction

source code



Represents a generic function, which can be inlined or not.

For example (from test/lldbutil.py, but slightly modified for doc purpose),

        ...

        frame = thread.GetFrameAtIndex(i)
        addr = frame.GetPCAddress()
        load_addr = addr.GetLoadAddress(target)
        function = frame.GetFunction()
        mod_name = frame.GetModule().GetFileSpec().GetFilename()

        if not function:
            # No debug info for 'function'.
            symbol = frame.GetSymbol()
            file_addr = addr.GetFileAddress()
            start_addr = symbol.GetStartAddress().GetFileAddress()
            symbol_name = symbol.GetName()
            symbol_offset = file_addr - start_addr
            print >> output, '  frame #{num}: {addr:#016x} {mod}`{symbol} + {offset}'.format(
                num=i, addr=load_addr, mod=mod_name, symbol=symbol_name, offset=symbol_offset)
        else:
            # Debug info is available for 'function'.
            func_name = frame.GetFunctionName()
            file_name = frame.GetLineEntry().GetFileSpec().GetFilename()
            line_num = frame.GetLineEntry().GetLine()
            print >> output, '  frame #{num}: {addr:#016x} {mod}`{func} at {file}:{line} {args}'.format(
                num=i, addr=load_addr, mod=mod_name,
                func='%s [inlined]' % func_name] if frame.IsInlined() else func_name,
                file=file_name, line=line_num, args=get_args_as_string(frame, showFuncName=False))

        ...

Instance Methods [hide private]
 
__repr__(self) source code
 
__init__(self, *args)
__init__(lldb::SBFunction self) -> SBFunction __init__(lldb::SBFunction self, SBFunction rhs) -> SBFunction
source code
 
IsValid(self)
IsValid(SBFunction self) -> bool
source code
 
__nonzero__(self) source code
 
__bool__(self) source code
 
GetName(self)
GetName(SBFunction self) -> char const *
source code
 
GetDisplayName(self)
GetDisplayName(SBFunction self) -> char const *
source code
 
GetMangledName(self)
GetMangledName(SBFunction self) -> char const *
source code
 
GetInstructions(self, *args)
GetInstructions(SBFunction self, SBTarget target) -> SBInstructionList GetInstructions(SBFunction self, SBTarget target, char const * flavor) -> SBInstructionList
source code
 
GetStartAddress(self)
GetStartAddress(SBFunction self) -> SBAddress
source code
 
GetEndAddress(self)
GetEndAddress(SBFunction self) -> SBAddress
source code
 
GetArgumentName(self, *args)
GetArgumentName(SBFunction self, uint32_t arg_idx) -> char const *
source code
 
GetPrologueByteSize(self)
GetPrologueByteSize(SBFunction self) -> uint32_t
source code
 
GetType(self)
GetType(SBFunction self) -> SBType
source code
 
GetBlock(self)
GetBlock(SBFunction self) -> SBBlock
source code
 
GetLanguage(self)
GetLanguage(SBFunction self) -> lldb::LanguageType
source code
 
GetIsOptimized(self)
GetIsOptimized(SBFunction self) -> bool
source code
 
GetDescription(self, *args)
GetDescription(SBFunction self, SBStream description) -> bool
source code
 
get_instructions_from_current_target(self) source code
 
__str__(self)
__str__(SBFunction self) -> PyObject *
source code
 
__eq__(self, rhs) source code
 
__ne__(self, rhs) source code
Class Variables [hide private]
  __swig_setmethods__ = {}
  __setattr__ = lambda self, name, value:
  __swig_getmethods__ = {}
  __getattr__ = lambda self, name:
  __swig_destroy__ = _lldb.delete_SBFunction
  __del__ = lambda self:
Method Details [hide private]

GetIsOptimized(self)

source code 

GetIsOptimized(SBFunction self) -> bool

Returns true if the function was compiled with optimization. Optimization, in this case, is meant to indicate that the debugger experience may be confusing for the user -- variables optimized away, stepping jumping between source lines -- and the driver may want to provide some guidance to the user about this. Returns false if unoptimized, or unknown.