1*9e9e8238SAdrian Prantl""" 2*9e9e8238SAdrian PrantlTest lldb-dap stack trace response 3*9e9e8238SAdrian Prantl""" 4*9e9e8238SAdrian Prantl 5*9e9e8238SAdrian Prantl 6*9e9e8238SAdrian Prantlimport dap_server 7*9e9e8238SAdrian Prantlfrom lldbsuite.test.decorators import * 8*9e9e8238SAdrian Prantl 9*9e9e8238SAdrian Prantlimport lldbdap_testcase 10*9e9e8238SAdrian Prantlfrom lldbsuite.test.lldbtest import * 11*9e9e8238SAdrian Prantl 12*9e9e8238SAdrian Prantl 13*9e9e8238SAdrian Prantlclass TestDAP_subtleFrames(lldbdap_testcase.DAPTestCaseBase): 14*9e9e8238SAdrian Prantl @add_test_categories(["libc++"]) 15*9e9e8238SAdrian Prantl def test_subtleFrames(self): 16*9e9e8238SAdrian Prantl """ 17*9e9e8238SAdrian Prantl Internal stack frames (such as the ones used by `std::function`) are marked as "subtle". 18*9e9e8238SAdrian Prantl """ 19*9e9e8238SAdrian Prantl program = self.getBuildArtifact("a.out") 20*9e9e8238SAdrian Prantl self.build_and_launch(program) 21*9e9e8238SAdrian Prantl source = "main.cpp" 22*9e9e8238SAdrian Prantl self.set_source_breakpoints(source, [line_number(source, "BREAK HERE")]) 23*9e9e8238SAdrian Prantl self.continue_to_next_stop() 24*9e9e8238SAdrian Prantl 25*9e9e8238SAdrian Prantl frames = self.get_stackFrames() 26*9e9e8238SAdrian Prantl for f in frames: 27*9e9e8238SAdrian Prantl if "__function" in f["name"]: 28*9e9e8238SAdrian Prantl self.assertEqual(f["presentationHint"], "subtle") 29*9e9e8238SAdrian Prantl self.assertTrue(any(f.get("presentationHint") == "subtle" for f in frames)) 30