[Lldb-commits] [lldb] 9e9e823 - Revert "Revert "[lldb-dap] Mark hidden frames as "subtle" (#105457)""

Adrian Prantl via lldb-commits lldb-commits at lists.llvm.org
Fri Aug 23 11:06:21 PDT 2024


Author: Adrian Prantl
Date: 2024-08-23T11:06:01-07:00
New Revision: 9e9e8238df63b9f10c6635d3f16d8a0fbc7f00c4

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

LOG: Revert "Revert "[lldb-dap] Mark hidden frames as "subtle" (#105457)""

This reverts commit aa70f83e660453c006193aab7ba67c94db236948.

Added: 
    lldb/test/API/tools/lldb-dap/stackTrace/subtleFrames/Makefile
    lldb/test/API/tools/lldb-dap/stackTrace/subtleFrames/TestDAP_subtleFrames.py
    lldb/test/API/tools/lldb-dap/stackTrace/subtleFrames/main.cpp

Modified: 
    lldb/tools/lldb-dap/JSONUtils.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/test/API/tools/lldb-dap/stackTrace/subtleFrames/Makefile b/lldb/test/API/tools/lldb-dap/stackTrace/subtleFrames/Makefile
new file mode 100644
index 00000000000000..99998b20bcb050
--- /dev/null
+++ b/lldb/test/API/tools/lldb-dap/stackTrace/subtleFrames/Makefile
@@ -0,0 +1,3 @@
+CXX_SOURCES := main.cpp
+
+include Makefile.rules

diff  --git a/lldb/test/API/tools/lldb-dap/stackTrace/subtleFrames/TestDAP_subtleFrames.py b/lldb/test/API/tools/lldb-dap/stackTrace/subtleFrames/TestDAP_subtleFrames.py
new file mode 100644
index 00000000000000..1e41e841e39bc8
--- /dev/null
+++ b/lldb/test/API/tools/lldb-dap/stackTrace/subtleFrames/TestDAP_subtleFrames.py
@@ -0,0 +1,29 @@
+"""
+Test lldb-dap stack trace response
+"""
+
+
+import dap_server
+from lldbsuite.test.decorators import *
+
+import lldbdap_testcase
+from lldbsuite.test.lldbtest import *
+
+
+class TestDAP_subtleFrames(lldbdap_testcase.DAPTestCaseBase):
+    @add_test_categories(["libc++"])
+    def test_subtleFrames(self):
+        """
+        Internal stack frames (such as the ones used by `std::function`) are marked as "subtle".
+        """
+        program = self.getBuildArtifact("a.out")
+        self.build_and_launch(program)
+        source = "main.cpp"
+        self.set_source_breakpoints(source, [line_number(source, "BREAK HERE")])
+        self.continue_to_next_stop()
+
+        frames = self.get_stackFrames()
+        for f in frames:
+            if "__function" in f["name"]:
+                self.assertEqual(f["presentationHint"], "subtle")
+        self.assertTrue(any(f.get("presentationHint") == "subtle" for f in frames))

diff  --git a/lldb/test/API/tools/lldb-dap/stackTrace/subtleFrames/main.cpp b/lldb/test/API/tools/lldb-dap/stackTrace/subtleFrames/main.cpp
new file mode 100644
index 00000000000000..71944528441e38
--- /dev/null
+++ b/lldb/test/API/tools/lldb-dap/stackTrace/subtleFrames/main.cpp
@@ -0,0 +1,13 @@
+#include <functional>
+#include <iostream>
+
+void greet() {
+  // BREAK HERE
+  std::cout << "Hello\n";
+}
+
+int main() {
+  std::function<void()> func{greet};
+  func();
+  return 0;
+}

diff  --git a/lldb/tools/lldb-dap/JSONUtils.cpp b/lldb/tools/lldb-dap/JSONUtils.cpp
index a8b85f55939e17..c080fd395b7288 100644
--- a/lldb/tools/lldb-dap/JSONUtils.cpp
+++ b/lldb/tools/lldb-dap/JSONUtils.cpp
@@ -763,6 +763,9 @@ llvm::json::Value CreateStackFrame(lldb::SBFrame &frame) {
     object.try_emplace("instructionPointerReference", formatted_addr);
   }
 
+  if (frame.IsArtificial() || frame.IsHidden())
+    object.try_emplace("presentationHint", "subtle");
+
   return llvm::json::Value(std::move(object));
 }
 


        


More information about the lldb-commits mailing list