""" Test lldb-dap stack trace when module is missing """ from lldbsuite.test.decorators import skipUnlessPlatform from lldbsuite.test.lldbtest import line_number import lldbdap_testcase import re class TestDAP_stackTraceMissingModule(lldbdap_testcase.DAPTestCaseBase): @skipUnlessPlatform(["linux"]) def test_missingModule(self): """ Test that the stack frame without a module still has assembly source. """ program = self.getBuildArtifact("a.out") self.build_and_launch(program, commandEscapePrefix="") source = "main.c" self.set_source_breakpoints( source, [line_number(source, "// Break here")], ) self.continue_to_next_stop() # Evaluate expr -- func expr_result = self.dap_server.request_evaluate( expression="expr -f pointer -- func", context="repl", ) expr_result_address = re.search( r"0x[0-9a-fA-F]+", expr_result["body"]["result"] ) self.assertIsNotNone( expr_result_address, "Failed to get address of dynamic allocated func" ) func_address = expr_result_address.group(0) self.dap_server.request_evaluate( expression=f"breakpoint set --address {func_address}", context="repl", ) self.continue_to_next_stop() frame_without_module = self.get_stackFrames()[0] self.assertIn("line", frame_without_module, "Line number missing.") self.assertIn("column", frame_without_module, "Column number missing.") self.assertIn("source", frame_without_module, "Source location missing.") source = frame_without_module["source"] self.assertIn("sourceReference", source, "Source reference missing.")