summaryrefslogtreecommitdiffstats
path: root/lldb/utils/lui/lui.py
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/utils/lui/lui.py')
-rwxr-xr-xlldb/utils/lui/lui.py191
1 files changed, 103 insertions, 88 deletions
diff --git a/lldb/utils/lui/lui.py b/lldb/utils/lui/lui.py
index 31b152c77f0..9b473f5ff82 100755
--- a/lldb/utils/lui/lui.py
+++ b/lldb/utils/lui/lui.py
@@ -1,15 +1,14 @@
#!/usr/bin/env python
##===-- lui.py -----------------------------------------------*- Python -*-===##
##
-## The LLVM Compiler Infrastructure
+# The LLVM Compiler Infrastructure
##
-## This file is distributed under the University of Illinois Open Source
-## License. See LICENSE.TXT for details.
+# This file is distributed under the University of Illinois Open Source
+# License. See LICENSE.TXT for details.
##
##===----------------------------------------------------------------------===##
-
import curses
import lldb
@@ -33,103 +32,119 @@ import statuswin
event_queue = None
-def handle_args(driver, argv):
- parser = OptionParser()
- parser.add_option("-p", "--attach", dest="pid", help="Attach to specified Process ID", type="int")
- parser.add_option("-c", "--core", dest="core", help="Load specified core file", type="string")
- (options, args) = parser.parse_args(argv)
+def handle_args(driver, argv):
+ parser = OptionParser()
+ parser.add_option(
+ "-p",
+ "--attach",
+ dest="pid",
+ help="Attach to specified Process ID",
+ type="int")
+ parser.add_option(
+ "-c",
+ "--core",
+ dest="core",
+ help="Load specified core file",
+ type="string")
+
+ (options, args) = parser.parse_args(argv)
+
+ if options.pid is not None:
+ try:
+ pid = int(options.pid)
+ driver.attachProcess(ui, pid)
+ except ValueError:
+ print "Error: expecting integer PID, got '%s'" % options.pid
+ elif options.core is not None:
+ if not os.path.exists(options.core):
+ raise Exception(
+ "Specified core file '%s' does not exist." %
+ options.core)
+ driver.loadCore(options.core)
+ elif len(args) == 2:
+ if not os.path.isfile(args[1]):
+ raise Exception("Specified target '%s' does not exist" % args[1])
+ driver.createTarget(args[1])
+ elif len(args) > 2:
+ if not os.path.isfile(args[1]):
+ raise Exception("Specified target '%s' does not exist" % args[1])
+ driver.createTarget(args[1], args[2:])
- if options.pid is not None:
- try:
- pid = int(options.pid)
- driver.attachProcess(ui, pid)
- except ValueError:
- print "Error: expecting integer PID, got '%s'" % options.pid
- elif options.core is not None:
- if not os.path.exists(options.core):
- raise Exception("Specified core file '%s' does not exist." % options.core)
- driver.loadCore(options.core)
- elif len(args) == 2:
- if not os.path.isfile(args[1]):
- raise Exception("Specified target '%s' does not exist" % args[1])
- driver.createTarget(args[1])
- elif len(args) > 2:
- if not os.path.isfile(args[1]):
- raise Exception("Specified target '%s' does not exist" % args[1])
- driver.createTarget(args[1], args[2:])
def sigint_handler(signal, frame):
- global debugger
- debugger.terminate()
+ global debugger
+ debugger.terminate()
+
class LLDBUI(cui.CursesUI):
- def __init__(self, screen, event_queue, driver):
- super(LLDBUI, self).__init__(screen, event_queue)
-
- self.driver = driver
-
- h, w = self.screen.getmaxyx()
-
- command_win_height = 20
- break_win_width = 60
-
- self.status_win = statuswin.StatusWin(0, h-1, w, 1)
- h -= 1
- self.command_win = commandwin.CommandWin(driver, 0, h - command_win_height,
- w, command_win_height)
- h -= command_win_height
- self.source_win = sourcewin.SourceWin(driver, 0, 0,
- w - break_win_width - 1, h)
- self.break_win = breakwin.BreakWin(driver, w - break_win_width, 0,
- break_win_width, h)
-
-
- self.wins = [self.status_win,
- #self.event_win,
- self.source_win,
- self.break_win,
- self.command_win,
- ]
-
- self.focus = len(self.wins) - 1 # index of command window;
-
- def handleEvent(self, event):
- # hack
- if isinstance(event, int):
- if event == curses.KEY_F10:
- self.driver.terminate()
- if event == 20: # ctrl-T
- def foo(cmd):
- ret = lldb.SBCommandReturnObject()
- self.driver.getCommandInterpreter().HandleCommand(cmd, ret)
- foo('target create a.out')
- foo('b main')
- foo('run')
- super(LLDBUI, self).handleEvent(event)
+
+ def __init__(self, screen, event_queue, driver):
+ super(LLDBUI, self).__init__(screen, event_queue)
+
+ self.driver = driver
+
+ h, w = self.screen.getmaxyx()
+
+ command_win_height = 20
+ break_win_width = 60
+
+ self.status_win = statuswin.StatusWin(0, h - 1, w, 1)
+ h -= 1
+ self.command_win = commandwin.CommandWin(
+ driver, 0, h - command_win_height, w, command_win_height)
+ h -= command_win_height
+ self.source_win = sourcewin.SourceWin(driver, 0, 0,
+ w - break_win_width - 1, h)
+ self.break_win = breakwin.BreakWin(driver, w - break_win_width, 0,
+ break_win_width, h)
+
+ self.wins = [self.status_win,
+ # self.event_win,
+ self.source_win,
+ self.break_win,
+ self.command_win,
+ ]
+
+ self.focus = len(self.wins) - 1 # index of command window;
+
+ def handleEvent(self, event):
+ # hack
+ if isinstance(event, int):
+ if event == curses.KEY_F10:
+ self.driver.terminate()
+ if event == 20: # ctrl-T
+ def foo(cmd):
+ ret = lldb.SBCommandReturnObject()
+ self.driver.getCommandInterpreter().HandleCommand(cmd, ret)
+ foo('target create a.out')
+ foo('b main')
+ foo('run')
+ super(LLDBUI, self).handleEvent(event)
+
def main(screen):
- signal.signal(signal.SIGINT, sigint_handler)
+ signal.signal(signal.SIGINT, sigint_handler)
- global event_queue
- event_queue = Queue.Queue()
+ global event_queue
+ event_queue = Queue.Queue()
- global debugger
- debugger = lldb.SBDebugger.Create()
+ global debugger
+ debugger = lldb.SBDebugger.Create()
- driver = debuggerdriver.createDriver(debugger, event_queue)
- view = LLDBUI(screen, event_queue, driver)
+ driver = debuggerdriver.createDriver(debugger, event_queue)
+ view = LLDBUI(screen, event_queue, driver)
- driver.start()
+ driver.start()
- # hack to avoid hanging waiting for prompts!
- driver.handleCommand("settings set auto-confirm true")
+ # hack to avoid hanging waiting for prompts!
+ driver.handleCommand("settings set auto-confirm true")
- handle_args(driver, sys.argv)
- view.eventLoop()
+ handle_args(driver, sys.argv)
+ view.eventLoop()
if __name__ == "__main__":
- try:
- curses.wrapper(main)
- except KeyboardInterrupt:
- exit()
+ try:
+ curses.wrapper(main)
+ except KeyboardInterrupt:
+ exit()
OpenPOWER on IntegriCloud