diff --git a/source/API/SBDebugger.cpp b/source/API/SBDebugger.cpp
index e3d2e47..6245b3a 100644
--- a/source/API/SBDebugger.cpp
+++ b/source/API/SBDebugger.cpp
@@ -1278,7 +1278,8 @@
       ConstString(debugger_instance_name)));
   Status error;
   if (debugger_sp) {
-    ExecutionContext exe_ctx(debugger_sp->GetSelectedExecutionContext());
+    ExecutionContext exe_ctx(
+        debugger_sp->GetCommandInterpreter().GetExecutionContext());
     error = debugger_sp->SetPropertyValue(&exe_ctx, eVarSetOperationAssign,
                                           var_name, value);
   } else {
@@ -1302,7 +1303,8 @@
       ConstString(debugger_instance_name)));
   Status error;
   if (debugger_sp) {
-    ExecutionContext exe_ctx(debugger_sp->GetSelectedExecutionContext());
+    ExecutionContext exe_ctx(
+        debugger_sp->GetCommandInterpreter().GetExecutionContext());
     lldb::OptionValueSP value_sp(
         debugger_sp->GetPropertyValue(&exe_ctx, var_name, false, error));
     if (value_sp) {
diff --git a/test/API/python_api/debugger/TestDebuggerAPI.py b/test/API/python_api/debugger/TestDebuggerAPI.py
index 5d0311e..32202ac 100644
--- a/test/API/python_api/debugger/TestDebuggerAPI.py
+++ b/test/API/python_api/debugger/TestDebuggerAPI.py
@@ -43,35 +43,3 @@
         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 different 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')
