Reland "[lldb] Make CommandInterpreter's execution context the same as debugger's one"
This commit is contained in:
@@ -43,3 +43,54 @@ class DebuggerAPITestCase(TestBase):
|
||||
target = lldb.SBTarget()
|
||||
self.assertFalse(target.IsValid())
|
||||
self.dbg.DeleteTarget(target)
|
||||
|
||||
def test_debugger_internal_variables(self):
|
||||
"""Ensure that SBDebugger reachs the same instance of properties
|
||||
regardless CommandInterpreter's context initialization"""
|
||||
self.build()
|
||||
exe = self.getBuildArtifact("a.out")
|
||||
|
||||
# Create a target by the debugger.
|
||||
target = self.dbg.CreateTarget(exe)
|
||||
self.assertTrue(target, VALID_TARGET)
|
||||
|
||||
property_name = "target.process.memory-cache-line-size"
|
||||
|
||||
def get_cache_line_size():
|
||||
value_list = lldb.SBStringList()
|
||||
value_list = self.dbg.GetInternalVariableValue(property_name,
|
||||
self.dbg.GetInstanceName())
|
||||
|
||||
self.assertEqual(value_list.GetSize(), 1)
|
||||
try:
|
||||
return int(value_list.GetStringAtIndex(0))
|
||||
except ValueError as error:
|
||||
self.fail("Value is not a number: " + error)
|
||||
|
||||
# Get global property value while there are no processes.
|
||||
global_cache_line_size = get_cache_line_size()
|
||||
|
||||
# Run a process via SB interface. CommandInterpreter's execution context
|
||||
# remains empty.
|
||||
error = lldb.SBError()
|
||||
launch_info = lldb.SBLaunchInfo(None)
|
||||
launch_info.SetLaunchFlags(lldb.eLaunchFlagStopAtEntry)
|
||||
process = target.Launch(launch_info, error)
|
||||
self.assertTrue(process, PROCESS_IS_VALID)
|
||||
|
||||
# This should change the value of a process's local property.
|
||||
new_cache_line_size = global_cache_line_size + 512
|
||||
error = self.dbg.SetInternalVariable(property_name,
|
||||
str(new_cache_line_size),
|
||||
self.dbg.GetInstanceName())
|
||||
self.assertTrue(error.Success(),
|
||||
property_name + " value was changed successfully")
|
||||
|
||||
# Check that it was set actually.
|
||||
self.assertEqual(get_cache_line_size(), new_cache_line_size)
|
||||
|
||||
# Run any command to initialize CommandInterpreter's execution context.
|
||||
self.runCmd("target list")
|
||||
|
||||
# Test the local property again, is it set to new_cache_line_size?
|
||||
self.assertEqual(get_cache_line_size(), new_cache_line_size)
|
||||
|
||||
Reference in New Issue
Block a user