1""" 2Set the contents of variables and registers using raw data 3""" 4 5 6 7import lldb 8from lldbsuite.test.decorators import * 9from lldbsuite.test.lldbtest import * 10from lldbsuite.test import lldbutil 11 12 13class SetDataTestCase(TestBase): 14 15 @add_test_categories(["objc"]) 16 def test_set_data(self): 17 """Test setting the contents of variables and registers using raw data.""" 18 self.build() 19 exe = self.getBuildArtifact("a.out") 20 self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) 21 22 self.runCmd("br s -p First") 23 self.runCmd("br s -p Second") 24 25 self.runCmd("run", RUN_SUCCEEDED) 26 27 self.expect("p myFoo.x", VARIABLES_DISPLAYED_CORRECTLY, 28 substrs=['2']) 29 30 process = self.dbg.GetSelectedTarget().GetProcess() 31 frame = process.GetSelectedThread().GetFrameAtIndex(0) 32 33 x = frame.FindVariable("myFoo").GetChildMemberWithName("x") 34 35 my_data = lldb.SBData.CreateDataFromSInt32Array( 36 lldb.eByteOrderLittle, 8, [4]) 37 err = lldb.SBError() 38 39 self.assertTrue(x.SetData(my_data, err)) 40 41 self.runCmd("continue") 42 43 self.expect("p myFoo.x", VARIABLES_DISPLAYED_CORRECTLY, 44 substrs=['4']) 45 46 frame = process.GetSelectedThread().GetFrameAtIndex(0) 47 48 x = frame.FindVariable("string") 49 50 if process.GetAddressByteSize() == 8: 51 my_data = lldb.SBData.CreateDataFromUInt64Array( 52 process.GetByteOrder(), 8, [0]) 53 else: 54 my_data = lldb.SBData.CreateDataFromUInt32Array( 55 process.GetByteOrder(), 4, [0]) 56 57 err = lldb.SBError() 58 59 self.assertTrue(x.SetData(my_data, err)) 60 61 self.expect( 62 "fr var -d run-target string", 63 VARIABLES_DISPLAYED_CORRECTLY, 64 substrs=[ 65 'NSString *', 66 'nil']) 67