| """ | |
| Set the contents of variables and registers using raw data | |
| """ | |
| from __future__ import print_function | |
| import lldb | |
| from lldbsuite.test.decorators import * | |
| from lldbsuite.test.lldbtest import * | |
| from lldbsuite.test import lldbutil | |
| class SetDataTestCase(TestBase): | |
| mydir = TestBase.compute_mydir(__file__) | |
| @skipUnlessDarwin | |
| def test_set_data(self): | |
| """Test setting the contents of variables and registers using raw data.""" | |
| self.build() | |
| exe = self.getBuildArtifact("a.out") | |
| self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) | |
| self.runCmd("br s -p First") | |
| self.runCmd("br s -p Second") | |
| self.runCmd("run", RUN_SUCCEEDED) | |
| self.expect("p myFoo.x", VARIABLES_DISPLAYED_CORRECTLY, | |
| substrs=['2']) | |
| process = self.dbg.GetSelectedTarget().GetProcess() | |
| frame = process.GetSelectedThread().GetFrameAtIndex(0) | |
| x = frame.FindVariable("myFoo").GetChildMemberWithName("x") | |
| my_data = lldb.SBData.CreateDataFromSInt32Array( | |
| lldb.eByteOrderLittle, 8, [4]) | |
| err = lldb.SBError() | |
| self.assertTrue(x.SetData(my_data, err)) | |
| self.runCmd("continue") | |
| self.expect("p myFoo.x", VARIABLES_DISPLAYED_CORRECTLY, | |
| substrs=['4']) | |
| frame = process.GetSelectedThread().GetFrameAtIndex(0) | |
| x = frame.FindVariable("string") | |
| if process.GetAddressByteSize() == 8: | |
| my_data = lldb.SBData.CreateDataFromUInt64Array( | |
| process.GetByteOrder(), 8, [0]) | |
| else: | |
| my_data = lldb.SBData.CreateDataFromUInt32Array( | |
| process.GetByteOrder(), 4, [0]) | |
| err = lldb.SBError() | |
| self.assertTrue(x.SetData(my_data, err)) | |
| self.expect( | |
| "fr var -d run-target string", | |
| VARIABLES_DISPLAYED_CORRECTLY, | |
| substrs=[ | |
| 'NSString *', | |
| 'nil']) |