summaryrefslogtreecommitdiffstats
path: root/lldb/utils/test/run-until-faulted.py
diff options
context:
space:
mode:
authorJohnny Chen <johnny.chen@apple.com>2011-06-01 22:12:27 +0000
committerJohnny Chen <johnny.chen@apple.com>2011-06-01 22:12:27 +0000
commit8831e18b17b3147cce34051c07b6f6b2d02a287c (patch)
tree8f7129f8d7378a618a3ca7fcdae1392962aae64e /lldb/utils/test/run-until-faulted.py
parent324f843107136608a2d7e5bc4315944864645301 (diff)
downloadbcm5719-llvm-8831e18b17b3147cce34051c07b6f6b2d02a287c.tar.gz
bcm5719-llvm-8831e18b17b3147cce34051c07b6f6b2d02a287c.zip
Make 'run-until-faulted.py' script more interesting by modifying the example main.c program
to seg fault randomly instead of deterministically. Example: [15:10:43] johnny:/Volumes/data/lldb/svn/trunk/utils/test $ clang -g main.c [15:10:46] johnny:/Volumes/data/lldb/svn/trunk/utils/test $ ./run-until-faulted.py -l $PWD/../../build/Debug/lldb -e a.out lldb command: /Volumes/data/lldb/svn/trunk/utils/test/../../build/Debug/lldb executable: a.out executable options: (lldb) sending 'file a.out' command... file a.out Current executable set to 'a.out' (x86_64). (lldb) sending 'process launch -- ' command... (iteration: 0) process launch -- Process 63630 launched: '/Volumes/data/lldb/svn/trunk/utils/test/a.out' (x86_64) Hello, fault! val=9 Better luck next time! Process 63630 exited with status = 0 (0x00000000) (lldb) sending 'process launch -- ' command... (iteration: 1) process launch -- Process 63633 launched: '/Volumes/data/lldb/svn/trunk/utils/test/a.out' (x86_64) Process 63633 exited with status = 0 (0x00000000) sending 'process launch -- ' command... (iteration: 2) Hello, fault! val=0 Better luck next time! (lldb) process launch -- Process 63637 launched: '/Volumes/data/lldb/svn/trunk/utils/test/a.out' (x86_64) Hello, fault! val=15 Better luck next time! Process 63637 exited with status = 0 (0x00000000) (lldb) sending 'process launch -- ' command... (iteration: 3) process launch -- Process 63640 launched: '/Volumes/data/lldb/svn/trunk/utils/test/a.out' (x86_64) Hello, fault! val=2 Better luck next time! Process 63640 exited with status = 0 (0x00000000) sending 'process launch -- ' command... (iteration: 4) (lldb) process launch -- Process 63643 launched: '/Volumes/data/lldb/svn/trunk/utils/test/a.out' (x86_64) Process 63643 stopped * thread #1: tid = 0x2d03, 0x0000000100000e93 a.out`main + 99 at main.c:11, stop reason = EXC_BAD_ACCESS (code=1, address=0x0) frame #0: 0x0000000100000e93 a.out`main + 99 at main.c:11 8 u_int32_t val = (arc4random() & 0x0f); 9 printf("val=%u\n", val); 10 if (val == 0x07) // Lucky 7 :-) -> 11 printf("Now segfault %d\n", *null_ptr); 12 else 13 printf("Better luck next time!\n"); 14 } (lldb) * thread #1: tid = 0x2d03, 0x0000000100000e93 a.out`main + 99 at main.c:11, stop reason = EXC_BAD_ACCESS (code=1, address=0x0) frame #0: 0x0000000100000e93 a.out`main + 99 at main.c:11 8 u_int32_t val = (arc4random() & 0x0f); 9 printf("val=%u\n", val); 10 if (val == 0x07) // Lucky 7 :-) -> 11 printf("Now segfault %d\n", *null_ptr); 12 else 13 printf("Better luck next time!\n"); 14 } Hello, fault! val=7 (lldb) llvm-svn: 132430
Diffstat (limited to 'lldb/utils/test/run-until-faulted.py')
-rwxr-xr-xlldb/utils/test/run-until-faulted.py19
1 files changed, 6 insertions, 13 deletions
diff --git a/lldb/utils/test/run-until-faulted.py b/lldb/utils/test/run-until-faulted.py
index f338d7bd969..93982037ada 100755
--- a/lldb/utils/test/run-until-faulted.py
+++ b/lldb/utils/test/run-until-faulted.py
@@ -33,31 +33,25 @@ def do_lldb_launch_loop(lldb_command, exe, exe_options):
prompt = "\(lldb\) "
lldb = pexpect.spawn(lldb_command)
# Turn on logging for what lldb sends back.
- #lldb.logfile_read = sys.stdout
+ lldb.logfile_read = sys.stdout
lldb.expect(prompt)
# Now issue the file command.
- print "sending file command...."
+ print "sending 'file %s' command..." % exe
lldb.sendline('file %s' % exe)
lldb.expect(prompt)
- #print "lldb.buffer:--->", lldb.buffer, "<---"
- #print "lldb.before:--->", lldb.before, "<---"
- #print "lldb.after:--->", lldb.buffer, "<----"
# Loop until it faults....
count = 0
#while True:
# count = count + 1
- for i in range(10):
+ for i in range(100):
count = i
- print "sending process launch -- %s (iteration: %d)" % (exe_options, count)
+ 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])
- #print "lldb.buffer:--->", lldb.buffer, "<---"
- #print "lldb.before:--->", lldb.before, "<----"
- #print "lldb.after:--->", lldb.buffer, "<----"
if index == 0:
# We'll try again later.
time.sleep(3)
@@ -78,10 +72,9 @@ def main():
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.
-
-Usage: %prog [options]
+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',
OpenPOWER on IntegriCloud