199451b44SJordan Rupprecht""" 299451b44SJordan RupprechtTest that argdumper is a viable launching strategy. 399451b44SJordan Rupprecht""" 499451b44SJordan Rupprecht 599451b44SJordan Rupprecht 699451b44SJordan Rupprechtimport lldb 799451b44SJordan Rupprechtfrom lldbsuite.test.decorators import * 899451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import * 999451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil 1099451b44SJordan Rupprecht 1199451b44SJordan Rupprecht 1299451b44SJordan Rupprechtclass TestRerun(TestBase): 1399451b44SJordan Rupprecht def test(self): 1499451b44SJordan Rupprecht self.build() 1599451b44SJordan Rupprecht exe = self.getBuildArtifact("a.out") 1699451b44SJordan Rupprecht 1799451b44SJordan Rupprecht self.runCmd("target create %s" % exe) 1899451b44SJordan Rupprecht 1999451b44SJordan Rupprecht # Create the target 2099451b44SJordan Rupprecht target = self.dbg.CreateTarget(exe) 2199451b44SJordan Rupprecht 2299451b44SJordan Rupprecht # Create any breakpoints we need 2399451b44SJordan Rupprecht breakpoint = target.BreakpointCreateBySourceRegex( 24*2238dcc3SJonas Devlieghere "break here", lldb.SBFileSpec("main.cpp", False) 25*2238dcc3SJonas Devlieghere ) 2699451b44SJordan Rupprecht self.assertTrue(breakpoint, VALID_BREAKPOINT) 2799451b44SJordan Rupprecht 2899451b44SJordan Rupprecht self.runCmd("process launch 1 2 3") 2999451b44SJordan Rupprecht 3099451b44SJordan Rupprecht process = self.process() 31*2238dcc3SJonas Devlieghere thread = lldbutil.get_one_thread_stopped_at_breakpoint(process, breakpoint) 3299451b44SJordan Rupprecht self.assertIsNotNone( 33*2238dcc3SJonas Devlieghere thread, "Process should be stopped at a breakpoint in main" 34*2238dcc3SJonas Devlieghere ) 3599451b44SJordan Rupprecht self.assertTrue(thread.IsValid(), "Stopped thread is not valid") 3699451b44SJordan Rupprecht 37*2238dcc3SJonas Devlieghere self.expect("frame variable argv[1]", substrs=["1"]) 38*2238dcc3SJonas Devlieghere self.expect("frame variable argv[2]", substrs=["2"]) 39*2238dcc3SJonas Devlieghere self.expect("frame variable argv[3]", substrs=["3"]) 4099451b44SJordan Rupprecht 4199451b44SJordan Rupprecht # Let program exit 4299451b44SJordan Rupprecht self.runCmd("continue") 4399451b44SJordan Rupprecht 4499451b44SJordan Rupprecht # Re-run with no args and make sure we still run with 1 2 3 as arguments as 4599451b44SJordan Rupprecht # they should have been stored in "target.run-args" 4699451b44SJordan Rupprecht self.runCmd("process launch") 4799451b44SJordan Rupprecht 4899451b44SJordan Rupprecht process = self.process() 49*2238dcc3SJonas Devlieghere thread = lldbutil.get_one_thread_stopped_at_breakpoint(process, breakpoint) 5099451b44SJordan Rupprecht 5199451b44SJordan Rupprecht self.assertIsNotNone( 52*2238dcc3SJonas Devlieghere thread, "Process should be stopped at a breakpoint in main" 53*2238dcc3SJonas Devlieghere ) 5499451b44SJordan Rupprecht self.assertTrue(thread.IsValid(), "Stopped thread is not valid") 5599451b44SJordan Rupprecht 56*2238dcc3SJonas Devlieghere self.expect("frame variable argv[1]", substrs=["1"]) 57*2238dcc3SJonas Devlieghere self.expect("frame variable argv[2]", substrs=["2"]) 58*2238dcc3SJonas Devlieghere self.expect("frame variable argv[3]", substrs=["3"]) 59