diff options
Diffstat (limited to 'lldb/examples/python/disasm.py')
-rwxr-xr-x | lldb/examples/python/disasm.py | 49 |
1 files changed, 28 insertions, 21 deletions
diff --git a/lldb/examples/python/disasm.py b/lldb/examples/python/disasm.py index 732cf10..af024a6 100755 --- a/lldb/examples/python/disasm.py +++ b/lldb/examples/python/disasm.py @@ -12,10 +12,12 @@ import lldb import os import sys -def disassemble_instructions (insts): + +def disassemble_instructions(insts): for i in insts: print i + def usage(): print "Usage: disasm.py [-n name] executable-image" print " By default, it breaks at and disassembles the 'main' function." @@ -36,63 +38,69 @@ else: # Create a new debugger instance debugger = lldb.SBDebugger.Create() -# When we step or continue, don't return from the function until the process +# 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) +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) +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()); + 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()) - + process = target.LaunchSimple(None, None, os.getcwd()) + # Make sure the launch went ok if process: # Print some simple process info - state = process.GetState () + state = process.GetState() print process if state == lldb.eStateStopped: # Get the first thread - thread = process.GetThreadAtIndex (0) + thread = process.GetThreadAtIndex(0) if thread: # Print some simple thread info print thread # Get the first frame - frame = thread.GetFrameAtIndex (0) + 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 + # We do have a function, print some info for the + # function print function - # Now get all instructions for this function and print them + # Now get all instructions for this function and print + # them insts = function.GetInstructions(target) - disassemble_instructions (insts) + disassemble_instructions(insts) else: - # See if we have a symbol in the symbol table for where we stopped - symbol = frame.GetSymbol(); + # 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 + # We do have a symbol, print some info for the + # symbol print symbol - # Now get all instructions for this symbol and print them + # Now get all instructions for this symbol and + # print them insts = symbol.GetInstructions(target) - disassemble_instructions (insts) + disassemble_instructions(insts) registerList = frame.GetRegisters() print "Frame registers (size of register set = %d):" % registerList.GetSize() for value in registerList: - #print value + # print value print "%s (number of children = %d):" % (value.GetName(), value.GetNumChildren()) for child in value: print "Name: ", child.GetName(), " Value: ", child.GetValue() @@ -111,9 +119,8 @@ if target: 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) + print "Unexpected process state: %s, killing process..." % debugger.StateAsCString(state) process.Kill() - lldb.SBDebugger.Terminate() |