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