2 "Represents a generic function, which can be inlined or not.
4 For example (from test/lldbutil.py, but slightly modified for doc purpose),::
8 frame = thread.GetFrameAtIndex(i)
9 addr = frame.GetPCAddress()
10 load_addr = addr.GetLoadAddress(target)
11 function = frame.GetFunction()
12 mod_name = frame.GetModule().GetFileSpec().GetFilename()
15 # No debug info for 'function'.
16 symbol = frame.GetSymbol()
17 file_addr = addr.GetFileAddress()
18 start_addr = symbol.GetStartAddress().GetFileAddress()
19 symbol_name = symbol.GetName()
20 symbol_offset = file_addr - start_addr
21 print >> output, ' frame #{num}: {addr:#016x} {mod}`{symbol} + {offset}'.format(
22 num=i, addr=load_addr, mod=mod_name, symbol=symbol_name, offset=symbol_offset)
24 # Debug info is available for 'function'.
25 func_name = frame.GetFunctionName()
26 file_name = frame.GetLineEntry().GetFileSpec().GetFilename()
27 line_num = frame.GetLineEntry().GetLine()
28 print >> output, ' frame #{num}: {addr:#016x} {mod}`{func} at {file}:{line} {args}'.format(
29 num=i, addr=load_addr, mod=mod_name,
30 func='%s [inlined]' % func_name] if frame.IsInlined() else func_name,
31 file=file_name, line=line_num, args=get_args_as_string(frame, showFuncName=False))
36 %feature
("docstring", "
37 Returns true if the function was compiled with optimization.
38 Optimization, in this case, is meant to indicate that the debugger
39 experience may be confusing for the user -- variables optimized away,
40 stepping jumping between source lines -- and the driver may want to
41 provide some guidance to the user about this.
42 Returns false if unoptimized, or unknown."
43 ) lldb
::SBFunction
::GetIsOptimized
;