[Lldb-commits] [lldb] dcb9401 - Revert "When there are variable errors, display an error in VS Code's local variables view."

Nico Weber via lldb-commits lldb-commits at lists.llvm.org
Wed Sep 28 17:07:36 PDT 2022


Author: Nico Weber
Date: 2022-09-28T20:07:14-04:00
New Revision: dcb94010eb8f0110c593a41e90b01365b45795e6

URL: https://github.com/llvm/llvm-project/commit/dcb94010eb8f0110c593a41e90b01365b45795e6
DIFF: https://github.com/llvm/llvm-project/commit/dcb94010eb8f0110c593a41e90b01365b45795e6.diff

LOG: Revert "When there are variable errors, display an error in VS Code's local variables view."

This reverts commit 15f83ab77502cb2bd405a091cf419536e1d41381.
Doesn't build, see https://reviews.llvm.org/D134333#3822313

Added: 
    

Modified: 
    lldb/test/API/tools/lldb-vscode/variables/TestVSCode_variables.py
    lldb/tools/lldb-vscode/lldb-vscode.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/test/API/tools/lldb-vscode/variables/TestVSCode_variables.py b/lldb/test/API/tools/lldb-vscode/variables/TestVSCode_variables.py
index 9b9195561606b..e4cb103010fde 100644
--- a/lldb/test/API/tools/lldb-vscode/variables/TestVSCode_variables.py
+++ b/lldb/test/API/tools/lldb-vscode/variables/TestVSCode_variables.py
@@ -7,7 +7,7 @@
 from lldbsuite.test.lldbtest import *
 from lldbsuite.test import lldbutil
 import lldbvscode_testcase
-import os
+
 
 def make_buffer_verify_dict(start_idx, count, offset=0):
     verify_dict = {}
@@ -38,14 +38,6 @@ def verify_values(self, verify_dict, actual, varref_dict=None, expression=None):
                                  ' "%s")') % (
                                     key, actual_value,
                                     verify_value))
-        if 'contains' in verify_dict:
-            verify = verify_dict['contains']
-            for key in verify:
-                contains_array = verify[key]
-                actual_value = actual[key]
-                self.assertTrue(isinstance(contains_array, list))
-                for verify_value in contains_array:
-                    self.assertIn(verify_value, actual_value)
         if 'missing' in verify_dict:
             missing = verify_dict['missing']
             for key in missing:
@@ -516,46 +508,3 @@ def test_registers(self):
                         self.assertTrue(value.startswith('0x'))
                         self.assertTrue('a.out`main + ' in value)
                         self.assertTrue('at main.cpp:' in value)
-
-    @no_debug_info_test
-    @skipUnlessDarwin
-    def test_darwin_dwarf_missing_obj(self):
-        '''
-            Test that if we build a binary with DWARF in .o files and we remove
-            the .o file for main.cpp, that we get a variable named "<error>"
-            whose value matches the appriopriate error. Errors when getting
-            variables are returned in the LLDB API when the user should be
-            notified of issues that can easily be solved by rebuilding or
-            changing compiler options and are designed to give better feedback
-            to the user.
-        '''
-        self.build(debug_info="dwarf")
-        program = self.getBuildArtifact("a.out")
-        main_obj = self.getBuildArtifact("main.o")
-        self.assertTrue(os.path.exists(main_obj))
-        # Delete the main.o file that contains the debug info so we force an
-        # error when we run to main and try to get variables
-        os.unlink(main_obj)
-
-        self.create_debug_adaptor()
-        self.assertTrue(os.path.exists(program), 'executable must exist')
-        self.launch(program)
-
-        functions = ['main']
-        breakpoint_ids = self.set_function_breakpoints(functions)
-        self.assertEquals(len(breakpoint_ids), len(functions), "expect one breakpoint")
-        self.continue_to_breakpoints(breakpoint_ids)
-
-        locals = self.vscode.get_local_variables()
-
-        verify_locals = {
-            '<error>': {
-                'equals': {'type': 'const char *'},
-                'contains': { 'value': [
-                    'debug map object file ',
-                    'main.o" containing debug info does not exist, debug info will not be loaded']
-                }
-            },
-        }
-        varref_dict = {}
-        self.verify_variables(verify_locals, locals, varref_dict)

diff  --git a/lldb/tools/lldb-vscode/lldb-vscode.cpp b/lldb/tools/lldb-vscode/lldb-vscode.cpp
index eaeab79dbef45..22ff84f42921b 100644
--- a/lldb/tools/lldb-vscode/lldb-vscode.cpp
+++ b/lldb/tools/lldb-vscode/lldb-vscode.cpp
@@ -2953,31 +2953,6 @@ void request_variables(const llvm::json::Object &request) {
     }
 
     num_children = top_scope->GetSize();
-    if (num_children == 0 && variablesReference == VARREF_LOCALS) {
-      // Check for an error in the SBValueList that might explain why we don't
-      // have locals. If we have an error display it as the sole value in the
-      // the locals.
-
-      // "error" owns the error string so we must keep it alive as long as we
-      // want to use the returns "const char *"
-      SBError error = top_scope->GetError();
-      const char *var_err = error.GetCString();
-      if (var_err) {
-        // Create a fake variable named "error" to explain why variables were
-        // not available. This new error will help let users know when there was
-        // a problem that kept variables from being available for display and
-        // allow users to fix this issue instead of seeing no variables. The
-        // errors are only set when there is a problem that the user could
-        // fix, so no error will show up when you have no debug info, only when
-        // we do have debug info and something that is fixable can be done.
-        llvm::json::Object object;
-        EmplaceSafeString(object, "name", "<error>");
-        EmplaceSafeString(object, "type", "const char *");
-        EmplaceSafeString(object, "value", var_err);
-        object.try_emplace("variablesReference", (int64_t)0);
-        variables.emplace_back(std::move(object));
-      }
-    }
     const int64_t end_idx = start_idx + ((count == 0) ? num_children : count);
 
     // We first find out which variable names are duplicated


        


More information about the lldb-commits mailing list