[Lldb-commits] [lldb] r233236 - Add a test to make sure if you do:
Greg Clayton
gclayton at apple.com
Wed Mar 25 17:27:46 PDT 2015
Author: gclayton
Date: Wed Mar 25 19:27:46 2015
New Revision: 233236
URL: http://llvm.org/viewvc/llvm-project?rev=233236&view=rev
Log:
Add a test to make sure if you do:
% lldb /bin/echo
(lldb) r 1 2 3
(lldb) r
You get "1", "2", and "3" as arguments in the next re-run when no args are specified. This is behavior we do to match what GDB did and we need to test that we don't regress on it.
<rdar://problem/20300941>
Added:
lldb/trunk/test/functionalities/rerun/
lldb/trunk/test/functionalities/rerun/Makefile
lldb/trunk/test/functionalities/rerun/TestRerun.py
lldb/trunk/test/functionalities/rerun/main.cpp
Added: lldb/trunk/test/functionalities/rerun/Makefile
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/rerun/Makefile?rev=233236&view=auto
==============================================================================
--- lldb/trunk/test/functionalities/rerun/Makefile (added)
+++ lldb/trunk/test/functionalities/rerun/Makefile Wed Mar 25 19:27:46 2015
@@ -0,0 +1,5 @@
+LEVEL = ../../make
+
+CXX_SOURCES := main.cpp
+
+include $(LEVEL)/Makefile.rules
Added: lldb/trunk/test/functionalities/rerun/TestRerun.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/rerun/TestRerun.py?rev=233236&view=auto
==============================================================================
--- lldb/trunk/test/functionalities/rerun/TestRerun.py (added)
+++ lldb/trunk/test/functionalities/rerun/TestRerun.py Wed Mar 25 19:27:46 2015
@@ -0,0 +1,94 @@
+"""
+Test that argdumper is a viable launching strategy.
+"""
+import commands
+import lldb
+import os
+import time
+import unittest2
+from lldbtest import *
+import lldbutil
+
+class TestRerun(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+
+ @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
+ @dsym_test
+ def test_with_dsym (self):
+ self.buildDsym()
+ self.do_test ()
+
+
+ @dwarf_test
+ def test_with_dwarf (self):
+ self.buildDwarf()
+ self.do_test ()
+
+ def do_test (self):
+ exe = os.path.join (os.getcwd(), "a.out")
+
+ self.runCmd("target create %s" % exe)
+
+ # Create the target
+ target = self.dbg.CreateTarget(exe)
+
+ # Create any breakpoints we need
+ breakpoint = target.BreakpointCreateBySourceRegex ('break here', lldb.SBFileSpec ("main.cpp", False))
+ self.assertTrue(breakpoint, VALID_BREAKPOINT)
+
+ self.runCmd("process launch 1 2 3")
+
+ process = self.process()
+
+ self.assertTrue(process.GetState() == lldb.eStateStopped,
+ STOPPED_DUE_TO_BREAKPOINT)
+
+ thread = process.GetThreadAtIndex (0)
+
+ self.assertTrue (thread.IsValid(),
+ "Process stopped at 'main' should have a valid thread");
+
+ stop_reason = thread.GetStopReason()
+
+ self.assertTrue (stop_reason == lldb.eStopReasonBreakpoint,
+ "Thread in process stopped in 'main' should have a stop reason of eStopReasonBreakpoint");
+
+ self.expect("frame variable argv[1]", substrs=['1'])
+ self.expect("frame variable argv[2]", substrs=['2'])
+ self.expect("frame variable argv[3]", substrs=['3'])
+
+ # Let program exit
+ self.runCmd("continue")
+
+ # Re-run with no args and make sure we still run with 1 2 3 as arguments as
+ # they should have been stored in "target.run-args"
+ self.runCmd("process launch")
+
+ process = self.process()
+
+ self.assertTrue(process.GetState() == lldb.eStateStopped,
+ STOPPED_DUE_TO_BREAKPOINT)
+
+ thread = process.GetThreadAtIndex (0)
+
+ self.assertTrue (thread.IsValid(),
+ "Process stopped at 'main' should have a valid thread");
+
+ stop_reason = thread.GetStopReason()
+
+ self.assertTrue (stop_reason == lldb.eStopReasonBreakpoint,
+ "Thread in process stopped in 'main' should have a stop reason of eStopReasonBreakpoint");
+
+ self.expect("frame variable argv[1]", substrs=['1'])
+ self.expect("frame variable argv[2]", substrs=['2'])
+ self.expect("frame variable argv[3]", substrs=['3'])
+
+
+if __name__ == '__main__':
+ import atexit
+ lldb.SBDebugger.Initialize()
+ atexit.register(lambda: lldb.SBDebugger.Terminate())
+ unittest2.main()
+
Added: lldb/trunk/test/functionalities/rerun/main.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/rerun/main.cpp?rev=233236&view=auto
==============================================================================
--- lldb/trunk/test/functionalities/rerun/main.cpp (added)
+++ lldb/trunk/test/functionalities/rerun/main.cpp Wed Mar 25 19:27:46 2015
@@ -0,0 +1,5 @@
+int
+main (int argc, char const **argv)
+{
+ return 0; // break here
+}
More information about the lldb-commits
mailing list