Revert "[lldb-vscode] Send Statistics Dump in terminated event"
authorGeorge Hu <huyubohyb@gmail.com>
Fri, 4 Nov 2022 22:37:18 +0000 (15:37 -0700)
committerGeorge Hu <huyubohyb@gmail.com>
Fri, 4 Nov 2022 22:37:18 +0000 (15:37 -0700)
This reverts commit e3ccbae309273900a42e30b606c15c873d57f1ea.

There is a bug which is failing the test running on mac.

lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py
lldb/test/API/tools/lldb-vscode/terminated-event/Makefile [deleted file]
lldb/test/API/tools/lldb-vscode/terminated-event/TestVSCode_terminatedEvent.py [deleted file]
lldb/test/API/tools/lldb-vscode/terminated-event/foo.cpp [deleted file]
lldb/test/API/tools/lldb-vscode/terminated-event/foo.h [deleted file]
lldb/test/API/tools/lldb-vscode/terminated-event/main.cpp [deleted file]
lldb/tools/lldb-vscode/JSONUtils.cpp
lldb/tools/lldb-vscode/JSONUtils.h
lldb/tools/lldb-vscode/lldb-vscode.cpp

index c2de4ad..d6a6abc 100644 (file)
@@ -369,13 +369,7 @@ class DebugCommunication(object):
     def wait_for_exited(self):
         event_dict = self.wait_for_event('exited')
         if event_dict is None:
-            raise ValueError("didn't get exited event")
-        return event_dict
-
-    def wait_for_terminated(self):
-        event_dict = self.wait_for_event('terminated')
-        if event_dict is None:
-            raise ValueError("didn't get terminated event")
+            raise ValueError("didn't get stopped event")
         return event_dict
 
     def get_initialize_value(self, key):
diff --git a/lldb/test/API/tools/lldb-vscode/terminated-event/Makefile b/lldb/test/API/tools/lldb-vscode/terminated-event/Makefile
deleted file mode 100644 (file)
index b30baf4..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-DYLIB_NAME := foo
-DYLIB_CXX_SOURCES := foo.cpp
-CXX_SOURCES := main.cpp
-
-LD_EXTRAS := -Wl,-rpath "-Wl,$(shell pwd)"
-USE_LIBDL :=1
-
-include Makefile.rules
-
-all: a.out.stripped
-
-a.out.stripped:
-       strip -o a.out.stripped a.out
-
-ifneq "$(CODESIGN)" ""
-       $(CODESIGN) -fs - a.out.stripped
-endif
\ No newline at end of file
diff --git a/lldb/test/API/tools/lldb-vscode/terminated-event/TestVSCode_terminatedEvent.py b/lldb/test/API/tools/lldb-vscode/terminated-event/TestVSCode_terminatedEvent.py
deleted file mode 100644 (file)
index a288012..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-"""
-Test lldb-vscode terminated event
-"""
-
-import vscode
-from lldbsuite.test.decorators import *
-from lldbsuite.test.lldbtest import *
-from lldbsuite.test import lldbutil
-import lldbvscode_testcase
-import re
-import json
-
-class TestVSCode_terminatedEvent(lldbvscode_testcase.VSCodeTestCaseBase):
-
-    @skipIfWindows
-    @skipIfRemote
-    def test_terminated_event(self):
-        '''
-            Terminated Event
-            Now contains the statistics of a debug session:
-            metatdata:
-                totalDebugInfoByteSize > 0
-                totalDebugInfoEnabled > 0
-                totalModuleCountHasDebugInfo > 0
-                ...
-            targetInfo:
-                totalBreakpointResolveTime > 0
-            breakpoints:
-                recognize function breakpoint
-                recognize source line breakpoint
-            It should contains the breakpoints info: function bp & source line bp
-        '''
-
-        program_basename = "a.out.stripped"
-        program = self.getBuildArtifact(program_basename)
-        self.build_and_launch(program)
-        # Set breakpoints
-        functions = ['foo']
-        breakpoint_ids = self.set_function_breakpoints(functions)
-        self.assertEquals(len(breakpoint_ids), len(functions), 'expect one breakpoint')
-        main_bp_line = line_number('main.cpp', '// main breakpoint 1')
-        breakpoint_ids.append(self.set_source_breakpoints('main.cpp', [main_bp_line]))
-
-        self.continue_to_breakpoints(breakpoint_ids)
-        self.continue_to_exit()
-
-        statistics = self.vscode.wait_for_terminated()['statistics']
-        self.assertTrue(statistics['totalDebugInfoByteSize'] > 0)
-        self.assertTrue(statistics['totalDebugInfoEnabled'] > 0)
-        self.assertTrue(statistics['totalModuleCountHasDebugInfo'] > 0)
-
-        # lldb-vscode debugs one target at a time
-        target = json.loads(statistics['targets'])[0]
-        self.assertTrue(target['totalBreakpointResolveTime'] > 0)
-
-        breakpoints = target['breakpoints']
-        self.assertIn('foo',
-                      breakpoints[0]['details']['Breakpoint']['BKPTResolver']['Options']['SymbolNames'],
-                      'foo is a symbol breakpoint')
-        self.assertTrue(breakpoints[1]['details']['Breakpoint']['BKPTResolver']['Options']['FileName'].endswith('main.cpp'),
-                        'target has source line breakpoint in main.cpp')
diff --git a/lldb/test/API/tools/lldb-vscode/terminated-event/foo.cpp b/lldb/test/API/tools/lldb-vscode/terminated-event/foo.cpp
deleted file mode 100644 (file)
index 9dba85a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-int foo() {
-    return 12;
-}
diff --git a/lldb/test/API/tools/lldb-vscode/terminated-event/foo.h b/lldb/test/API/tools/lldb-vscode/terminated-event/foo.h
deleted file mode 100644 (file)
index 5d5f8f0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-int foo();
diff --git a/lldb/test/API/tools/lldb-vscode/terminated-event/main.cpp b/lldb/test/API/tools/lldb-vscode/terminated-event/main.cpp
deleted file mode 100644 (file)
index cd984e5..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#include <iostream>
-#include "foo.h"
-
-int main(int argc, char const *argv[]) {
-  std::cout << "Hello World!" << std::endl; // main breakpoint 1
-  foo();
-  return 0;
-}
index bd8a914..39c24f8 100644 (file)
@@ -19,8 +19,6 @@
 #include "lldb/API/SBBreakpoint.h"
 #include "lldb/API/SBBreakpointLocation.h"
 #include "lldb/API/SBDeclaration.h"
-#include "lldb/API/SBStringList.h"
-#include "lldb/API/SBStructuredData.h"
 #include "lldb/API/SBValue.h"
 #include "lldb/Host/PosixApi.h"
 
@@ -1142,73 +1140,6 @@ CreateRunInTerminalReverseRequest(const llvm::json::Object &launch_request,
   return reverse_request;
 }
 
-// Keep all the top level items from the statistics dump, except for the
-// "modules" array. It can be huge and cause delay
-// Array and dictionary value will return as <key, JSON string> pairs
-void FilterAndGetValueForKey(const lldb::SBStructuredData data, const char *key,
-                             llvm::json::Object &out) {
-  lldb::SBStructuredData value = data.GetValueForKey(key);
-  std::string key_utf8 = llvm::json::fixUTF8(key);
-  if (strcmp(key, "modules") == 0)
-    return;
-  switch (value.GetType()) {
-  case lldb::eStructuredDataTypeFloat:
-    out.try_emplace(key_utf8, value.GetFloatValue());
-    break;
-  case lldb::eStructuredDataTypeInteger:
-    out.try_emplace(key_utf8, value.GetIntegerValue());
-    break;
-  case lldb::eStructuredDataTypeArray: {
-    lldb::SBStream contents;
-    value.GetAsJSON(contents);
-    EmplaceSafeString(out, key, contents.GetData());
-  } break;
-  case lldb::eStructuredDataTypeBoolean:
-    out.try_emplace(key_utf8, value.GetBooleanValue());
-    break;
-  case lldb::eStructuredDataTypeString: {
-    // Get the string size before reading
-    const size_t str_length = value.GetStringValue(nullptr, 0);
-    std::string str(str_length + 1, 0);
-    value.GetStringValue(&str[0], str_length);
-    EmplaceSafeString(out, key, str);
-  } break;
-  case lldb::eStructuredDataTypeDictionary: {
-    lldb::SBStream contents;
-    value.GetAsJSON(contents);
-    EmplaceSafeString(out, key, contents.GetData());
-  } break;
-  case lldb::eStructuredDataTypeNull:
-  case lldb::eStructuredDataTypeGeneric:
-  case lldb::eStructuredDataTypeInvalid:
-    break;
-  }
-}
-
-void addStatistic(llvm::json::Object &event) {
-  lldb::SBStructuredData statistics = g_vsc.target.GetStatistics();
-  bool is_dictionary =
-      statistics.GetType() == lldb::eStructuredDataTypeDictionary;
-  if (!is_dictionary)
-    return;
-  llvm::json::Object stats_body;
-
-  lldb::SBStringList keys;
-  if (!statistics.GetKeys(keys))
-    return;
-  for (size_t i = 0; i < keys.GetSize(); i++) {
-    const char *key = keys.GetStringAtIndex(i);
-    FilterAndGetValueForKey(statistics, key, stats_body);
-  }
-  event.try_emplace("statistics", std::move(stats_body));
-}
-
-llvm::json::Object CreateTerminatedEventObject() {
-  llvm::json::Object event(CreateEventObject("terminated"));
-  addStatistic(event);
-  return event;
-}
-
 std::string JSONToString(const llvm::json::Value &json) {
   std::string data;
   llvm::raw_string_ostream os(data);
index c812ec8..bb81b88 100644 (file)
@@ -485,12 +485,6 @@ CreateRunInTerminalReverseRequest(const llvm::json::Object &launch_request,
                                   llvm::StringRef debug_adaptor_path,
                                   llvm::StringRef comm_file);
 
-/// Create a "Terminated" JSON object that contains statistics
-///
-/// \return
-///     A body JSON object with debug info and breakpoint info
-llvm::json::Object CreateTerminatedEventObject();
-
 /// Convert a given JSON object to a string.
 std::string JSONToString(const llvm::json::Value &json);
 
index 21d2bc2..1c6f9c8 100644 (file)
@@ -204,7 +204,7 @@ void SendTerminatedEvent() {
     g_vsc.sent_terminated_event = true;
     g_vsc.RunTerminateCommands();
     // Send a "terminated" event
-    llvm::json::Object event(CreateTerminatedEventObject());
+    llvm::json::Object event(CreateEventObject("terminated"));
     g_vsc.SendJSON(llvm::json::Value(std::move(event)));
   }
 }
@@ -2949,7 +2949,7 @@ void request_variables(const llvm::json::Object &request) {
       const uint32_t addr_size = g_vsc.target.GetProcess().GetAddressByteSize();
       lldb::SBValue reg_set = g_vsc.variables.registers.GetValueAtIndex(0);
       const uint32_t num_regs = reg_set.GetNumChildren();
-      for (uint32_t reg_idx = 0; reg_idx < num_regs; ++reg_idx) {
+      for (uint32_t reg_idx=0; reg_idx<num_regs; ++reg_idx) {
         lldb::SBValue reg = reg_set.GetChildAtIndex(reg_idx);
         const lldb::Format format = reg.GetFormat();
         if (format == lldb::eFormatDefault || format == lldb::eFormatHex) {