[Lldb-commits] [lldb] 03c7cd3 - Revert "[lldb-vscode] Send Statistics Dump in terminated event"
George Hu via lldb-commits
lldb-commits at lists.llvm.org
Fri Nov 4 15:38:33 PDT 2022
Author: George Hu
Date: 2022-11-04T15:37:18-07:00
New Revision: 03c7cd3a616b731cf041fbf164078b349223c4ef
URL: https://github.com/llvm/llvm-project/commit/03c7cd3a616b731cf041fbf164078b349223c4ef
DIFF: https://github.com/llvm/llvm-project/commit/03c7cd3a616b731cf041fbf164078b349223c4ef.diff
LOG: Revert "[lldb-vscode] Send Statistics Dump in terminated event"
This reverts commit e3ccbae309273900a42e30b606c15c873d57f1ea.
There is a bug which is failing the test running on mac.
Added:
Modified:
lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py
lldb/tools/lldb-vscode/JSONUtils.cpp
lldb/tools/lldb-vscode/JSONUtils.h
lldb/tools/lldb-vscode/lldb-vscode.cpp
Removed:
lldb/test/API/tools/lldb-vscode/terminated-event/Makefile
lldb/test/API/tools/lldb-vscode/terminated-event/TestVSCode_terminatedEvent.py
lldb/test/API/tools/lldb-vscode/terminated-event/foo.cpp
lldb/test/API/tools/lldb-vscode/terminated-event/foo.h
lldb/test/API/tools/lldb-vscode/terminated-event/main.cpp
################################################################################
diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py
index c2de4ad5c7d9a..d6a6abca53e38 100644
--- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py
+++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py
@@ -369,13 +369,7 @@ def wait_for_stopped(self, timeout=None):
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
index b30baf48b972e..0000000000000
--- a/lldb/test/API/tools/lldb-vscode/terminated-event/Makefile
+++ /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
index a288012530881..0000000000000
--- a/lldb/test/API/tools/lldb-vscode/terminated-event/TestVSCode_terminatedEvent.py
+++ /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
index 9dba85a9cccab..0000000000000
--- a/lldb/test/API/tools/lldb-vscode/terminated-event/foo.cpp
+++ /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
index 5d5f8f0c9e786..0000000000000
--- a/lldb/test/API/tools/lldb-vscode/terminated-event/foo.h
+++ /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
index cd984e560e0d2..0000000000000
--- a/lldb/test/API/tools/lldb-vscode/terminated-event/main.cpp
+++ /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;
-}
diff --git a/lldb/tools/lldb-vscode/JSONUtils.cpp b/lldb/tools/lldb-vscode/JSONUtils.cpp
index bd8a9148c241f..39c24f8b23e39 100644
--- a/lldb/tools/lldb-vscode/JSONUtils.cpp
+++ b/lldb/tools/lldb-vscode/JSONUtils.cpp
@@ -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);
diff --git a/lldb/tools/lldb-vscode/JSONUtils.h b/lldb/tools/lldb-vscode/JSONUtils.h
index c812ec87beab0..bb81b88895938 100644
--- a/lldb/tools/lldb-vscode/JSONUtils.h
+++ b/lldb/tools/lldb-vscode/JSONUtils.h
@@ -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);
diff --git a/lldb/tools/lldb-vscode/lldb-vscode.cpp b/lldb/tools/lldb-vscode/lldb-vscode.cpp
index 21d2bc2229043..1c6f9c829c388 100644
--- a/lldb/tools/lldb-vscode/lldb-vscode.cpp
+++ b/lldb/tools/lldb-vscode/lldb-vscode.cpp
@@ -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) {
More information about the lldb-commits
mailing list