[Lldb-commits] [lldb] 754ab80 - [lldb] Use current execution context in SBDebugger
Raphael Isemann via lldb-commits
lldb-commits at lists.llvm.org
Mon Feb 1 04:13:00 PST 2021
Author: Andy Yankovsky
Date: 2021-02-01T13:12:42+01:00
New Revision: 754ab803b8dc659e3645d369d1b5d6d2f97be29e
URL: https://github.com/llvm/llvm-project/commit/754ab803b8dc659e3645d369d1b5d6d2f97be29e
DIFF: https://github.com/llvm/llvm-project/commit/754ab803b8dc659e3645d369d1b5d6d2f97be29e.diff
LOG: [lldb] Use current execution context in SBDebugger
Use `GetSelectedExecutionContext()` instead of
`GetCommandInterpreter().GetExecutionContext()` in
`SBDebugger::GetInternalVariableValue/SBDebugger::SetInternalVariable`. The
execution context in the command interpreter might be empty, if no commands has
been executed yet (it is updated only when handling commands or completions --
e.g.
https://github.com/llvm/llvm-project/blob/main/lldb/source/Interpreter/CommandInterpreter.cpp#L1855).
Reviewed By: teemperor
Differential Revision: https://reviews.llvm.org/D95761
Added:
Modified:
lldb/source/API/SBDebugger.cpp
lldb/test/API/python_api/debugger/TestDebuggerAPI.py
Removed:
################################################################################
diff --git a/lldb/source/API/SBDebugger.cpp b/lldb/source/API/SBDebugger.cpp
index 6245b3a83565..e3d2e4728a87 100644
--- a/lldb/source/API/SBDebugger.cpp
+++ b/lldb/source/API/SBDebugger.cpp
@@ -1278,8 +1278,7 @@ SBError SBDebugger::SetInternalVariable(const char *var_name, const char *value,
ConstString(debugger_instance_name)));
Status error;
if (debugger_sp) {
- ExecutionContext exe_ctx(
- debugger_sp->GetCommandInterpreter().GetExecutionContext());
+ ExecutionContext exe_ctx(debugger_sp->GetSelectedExecutionContext());
error = debugger_sp->SetPropertyValue(&exe_ctx, eVarSetOperationAssign,
var_name, value);
} else {
@@ -1303,8 +1302,7 @@ SBDebugger::GetInternalVariableValue(const char *var_name,
ConstString(debugger_instance_name)));
Status error;
if (debugger_sp) {
- ExecutionContext exe_ctx(
- debugger_sp->GetCommandInterpreter().GetExecutionContext());
+ ExecutionContext exe_ctx(debugger_sp->GetSelectedExecutionContext());
lldb::OptionValueSP value_sp(
debugger_sp->GetPropertyValue(&exe_ctx, var_name, false, error));
if (value_sp) {
diff --git a/lldb/test/API/python_api/debugger/TestDebuggerAPI.py b/lldb/test/API/python_api/debugger/TestDebuggerAPI.py
index 32202acbe072..5d0311eb1b0c 100644
--- a/lldb/test/API/python_api/debugger/TestDebuggerAPI.py
+++ b/lldb/test/API/python_api/debugger/TestDebuggerAPI.py
@@ -43,3 +43,35 @@ def test_debugger_delete_invalid_target(self):
target = lldb.SBTarget()
self.assertFalse(target.IsValid())
self.dbg.DeleteTarget(target)
+
+ @add_test_categories(['pyapi'])
+ def test_debugger_internal_variables(self):
+ debugger_name = self.dbg.GetInstanceName()
+
+ # Set a variable and check it was written successfully.
+ error = lldb.SBDebugger.SetInternalVariable(
+ 'target.prefer-dynamic-value', 'no-dynamic-values', debugger_name)
+ self.assertTrue(error.Success())
+ ret = lldb.SBDebugger.GetInternalVariableValue(
+ 'target.prefer-dynamic-value', debugger_name)
+ self.assertEqual(ret.GetSize(), 1)
+ self.assertEqual(ret.GetStringAtIndex(0), 'no-dynamic-values')
+
+ # Set a variable with a
diff erent value.
+ error = lldb.SBDebugger.SetInternalVariable(
+ 'target.prefer-dynamic-value', 'no-run-target', debugger_name)
+ self.assertTrue(error.Success())
+ ret = lldb.SBDebugger.GetInternalVariableValue(
+ 'target.prefer-dynamic-value', debugger_name)
+ self.assertEqual(ret.GetSize(), 1)
+ self.assertEqual(ret.GetStringAtIndex(0), 'no-run-target')
+
+ # Try setting invalid value, check for error.
+ error = lldb.SBDebugger.SetInternalVariable(
+ 'target.prefer-dynamic-value', 'dummy-value', debugger_name)
+ self.assertTrue(error.Fail())
+ # Check that the value didn't change.
+ ret = lldb.SBDebugger.GetInternalVariableValue(
+ 'target.prefer-dynamic-value', debugger_name)
+ self.assertEqual(ret.GetSize(), 1)
+ self.assertEqual(ret.GetStringAtIndex(0), 'no-run-target')
More information about the lldb-commits
mailing list