diff options
| author | Tatyana Krasnukha <tatyana@synopsys.com> | 2020-12-18 16:36:15 +0300 |
|---|---|---|
| committer | Tatyana Krasnukha <tatyana@synopsys.com> | 2021-02-08 15:09:09 +0300 |
| commit | 36de94cf54efbad967a9a0fa41329a8b59bc35c4 (patch) | |
| tree | 247b40f741e8a9e43cffda9ab5b0ac595a0b130e /lldb/test/API/python_api | |
| parent | a39bcbca92e169baeb8b2c55dff90141ddd53888 (diff) | |
| download | llvm-36de94cf54efbad967a9a0fa41329a8b59bc35c4.zip llvm-36de94cf54efbad967a9a0fa41329a8b59bc35c4.tar.gz llvm-36de94cf54efbad967a9a0fa41329a8b59bc35c4.tar.bz2 | |
Reland "[lldb] Make CommandInterpreter's execution context the same as debugger's one"
Diffstat (limited to 'lldb/test/API/python_api')
| -rw-r--r-- | lldb/test/API/python_api/debugger/Makefile | 3 | ||||
| -rw-r--r-- | lldb/test/API/python_api/debugger/TestDebuggerAPI.py | 51 | ||||
| -rw-r--r-- | lldb/test/API/python_api/debugger/main.cpp | 9 |
3 files changed, 63 insertions, 0 deletions
diff --git a/lldb/test/API/python_api/debugger/Makefile b/lldb/test/API/python_api/debugger/Makefile new file mode 100644 index 0000000..bfad5f3 --- /dev/null +++ b/lldb/test/API/python_api/debugger/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp
+
+include Makefile.rules
diff --git a/lldb/test/API/python_api/debugger/TestDebuggerAPI.py b/lldb/test/API/python_api/debugger/TestDebuggerAPI.py index 32202ac..1559714 100644 --- a/lldb/test/API/python_api/debugger/TestDebuggerAPI.py +++ b/lldb/test/API/python_api/debugger/TestDebuggerAPI.py @@ -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) diff --git a/lldb/test/API/python_api/debugger/main.cpp b/lldb/test/API/python_api/debugger/main.cpp new file mode 100644 index 0000000..4b4ca68 --- /dev/null +++ b/lldb/test/API/python_api/debugger/main.cpp @@ -0,0 +1,9 @@ +// This simple program is to test the lldb Python API SBDebugger. + +int func(int val) { + return val - 1; +} + +int main (int argc, char const *argv[]) { + return func(argc); +} |
