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