summaryrefslogtreecommitdiff
path: root/utils/test/run-until-faulted.py
diff options
context:
space:
mode:
Diffstat (limited to 'utils/test/run-until-faulted.py')
-rwxr-xr-xutils/test/run-until-faulted.py130
1 files changed, 0 insertions, 130 deletions
diff --git a/utils/test/run-until-faulted.py b/utils/test/run-until-faulted.py
deleted file mode 100755
index 794f4fc84786..000000000000
--- a/utils/test/run-until-faulted.py
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/usr/bin/env python
-
-"""
-Run a program via lldb until it fails.
-The lldb executable is located via your PATH env variable, if not specified.
-"""
-
-import os
-import sys
-from optparse import OptionParser
-
-
-def is_exe(fpath):
- """Check whether fpath is an executable."""
- return os.path.isfile(fpath) and os.access(fpath, os.X_OK)
-
-
-def which(program):
- """Find the full path to a program, or return None."""
- fpath, fname = os.path.split(program)
- if fpath:
- if is_exe(program):
- return program
- else:
- for path in os.environ["PATH"].split(os.pathsep):
- exe_file = os.path.join(path, program)
- if is_exe(exe_file):
- return exe_file
- return None
-
-
-def do_lldb_launch_loop(lldb_command, exe, exe_options):
- from cStringIO import StringIO
- import pexpect
- import time
-
- prompt = "\(lldb\) "
- lldb = pexpect.spawn(lldb_command)
- # Turn on logging for what lldb sends back.
- lldb.logfile_read = sys.stdout
- lldb.expect(prompt)
-
- # Now issue the file command.
- # print "sending 'file %s' command..." % exe
- lldb.sendline('file %s' % exe)
- lldb.expect(prompt)
-
- # Loop until it faults....
- count = 0
- # while True:
- # count = count + 1
- for i in range(100):
- count = i
- # print "sending 'process launch -- %s' command... (iteration: %d)" %
- # (exe_options, count)
- lldb.sendline('process launch -- %s' % exe_options)
- index = lldb.expect(['Process .* exited with status',
- 'Process .* stopped',
- pexpect.TIMEOUT])
- if index == 0:
- # We'll try again later.
- time.sleep(3)
- elif index == 1:
- # Perfect, our process had stopped; break out of the loop.
- break
- elif index == 2:
- # Something went wrong.
- print "TIMEOUT occurred:", str(lldb)
-
- # Give control of lldb shell to the user.
- lldb.interact()
-
-
-def main():
- # This is to set up the Python path to include the pexpect-2.4 dir.
- # Remember to update this when/if things change.
- scriptPath = sys.path[0]
- sys.path.append(
- os.path.join(
- scriptPath,
- os.pardir,
- os.pardir,
- 'test',
- 'pexpect-2.4'))
-
- parser = OptionParser(usage="""\
-%prog [options]
-Run a program via lldb until it fails.
-The lldb executable is located via your PATH env variable, if not specified.\
-""")
- parser.add_option('-l', '--lldb-command',
- type='string', action='store', metavar='LLDB_COMMAND',
- default='lldb', dest='lldb_command',
- help='Full path to your lldb command')
- parser.add_option(
- '-e',
- '--executable',
- type='string',
- action='store',
- dest='exe',
- help="""(Mandatory) The executable to launch via lldb.""")
- parser.add_option(
- '-o',
- '--options',
- type='string',
- action='store',
- default='',
- dest='exe_options',
- help="""The args/options passed to the launched program, if specified.""")
-
- opts, args = parser.parse_args()
-
- lldb_command = which(opts.lldb_command)
-
- if not opts.exe:
- parser.print_help()
- sys.exit(1)
- exe = opts.exe
-
- exe_options = opts.exe_options
-
- # We have parsed the options.
- print "lldb command:", lldb_command
- print "executable:", exe
- print "executable options:", exe_options
-
- do_lldb_launch_loop(lldb_command, exe, exe_options)
-
-if __name__ == '__main__':
- main()