[Lldb-commits] [lldb] r134524 - /lldb/trunk/include/lldb/API/SBDebugger.h
Johnny Chen
johnny.chen at apple.com
Wed Jul 6 12:28:33 PDT 2011
Author: johnny
Date: Wed Jul 6 14:28:33 2011
New Revision: 134524
URL: http://llvm.org/viewvc/llvm-project?rev=134524&view=rev
Log:
Add docstrings for the primordial object -- SBDebugger.
The swig "autodoc" feature to remove '*' from 'char *' will be handled by doing
post-processing on the lldb.py module.
Modified:
lldb/trunk/include/lldb/API/SBDebugger.h
Modified: lldb/trunk/include/lldb/API/SBDebugger.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/API/SBDebugger.h?rev=134524&r1=134523&r2=134524&view=diff
==============================================================================
--- lldb/trunk/include/lldb/API/SBDebugger.h (original)
+++ lldb/trunk/include/lldb/API/SBDebugger.h Wed Jul 6 14:28:33 2011
@@ -15,8 +15,111 @@
namespace lldb {
+#ifdef SWIG
+%feature("docstring",
+"SBDebugger is the primordial object that creates SBTargets and provides
+access to them. It also manages the overall debugging experiences.
+
+For example (in example/disasm.py),
+
+import lldb
+import os
+import sys
+
+def disassemble_instructions (insts):
+ for i in insts:
+ print i
+
+...
+
+# Create a new debugger instance
+debugger = lldb.SBDebugger.Create()
+
+# When we step or continue, don't return from the function until the process
+# stops. We do this by setting the async mode to false.
+debugger.SetAsync (False)
+
+# Create a target from a file and arch
+print 'Creating a target for \'%s\'' % exe
+
+target = debugger.CreateTargetWithFileAndArch (exe, lldb.LLDB_ARCH_DEFAULT)
+
+if target:
+ # If the target is valid set a breakpoint at main
+ main_bp = target.BreakpointCreateByName (fname, target.GetExecutable().GetFilename());
+
+ print main_bp
+
+ # Launch the process. Since we specified synchronous mode, we won't return
+ # from this function until we hit the breakpoint at main
+ process = target.LaunchSimple (None, None, os.getcwd())
+
+ # Make sure the launch went ok
+ if process:
+ # Print some simple process info
+ state = process.GetState ()
+ print process
+ if state == lldb.eStateStopped:
+ # Get the first thread
+ thread = process.GetThreadAtIndex (0)
+ if thread:
+ # Print some simple thread info
+ print thread
+ # Get the first frame
+ frame = thread.GetFrameAtIndex (0)
+ if frame:
+ # Print some simple frame info
+ print frame
+ function = frame.GetFunction()
+ # See if we have debug info (a function)
+ if function:
+ # We do have a function, print some info for the function
+ print function
+ # Now get all instructions for this function and print them
+ insts = function.GetInstructions(target)
+ disassemble_instructions (insts)
+ else:
+ # See if we have a symbol in the symbol table for where we stopped
+ symbol = frame.GetSymbol();
+ if symbol:
+ # We do have a symbol, print some info for the symbol
+ print symbol
+ # Now get all instructions for this symbol and print them
+ insts = symbol.GetInstructions(target)
+ disassemble_instructions (insts)
+
+ registerList = frame.GetRegisters()
+ print 'Frame registers (size of register set = %d):' % registerList.GetSize()
+ for value in registerList:
+ #print value
+ print '%s (number of children = %d):' % (value.GetName(), value.GetNumChildren())
+ for child in value:
+ print 'Name: ', child.GetName(), ' Value: ', child.GetValue(frame)
+
+ print 'Hit the breakpoint at main, enter to continue and wait for program to exit or \'Ctrl-D\'/\'quit\' to terminate the program'
+ next = sys.stdin.readline()
+ if not next or next.rstrip('\n') == 'quit':
+ print 'Terminating the inferior process...'
+ process.Kill()
+ else:
+ # Now continue to the program exit
+ process.Continue()
+ # When we return from the above function we will hopefully be at the
+ # program exit. Print out some process info
+ print process
+ elif state == lldb.eStateExited:
+ print 'Didn\'t hit the breakpoint at main, program has exited...'
+ else:
+ print 'Unexpected process state: %s, killing process...' % debugger.StateAsCString (state)
+ process.Kill()
+"
+ ) SBDebugger;
+#endif
class SBDebugger
{
+#ifdef SWIG
+ %feature("autodoc", "1");
+#endif
public:
static void
More information about the lldb-commits
mailing list