================
@@ -294,3 +300,65 @@ def test_stack_frame_module_id(self) -> None:
expected_id,
f"expected moduleId '{expected_id}' for {source_name},
got: {module_id}",
)
+
+ @skipIfWindows
+ def test_stack_frame_compile_unit_id(self) -> None:
+ """Test that a stack frame's compileUnitId resolves to its source
file."""
+ program = self.getBuildArtifact("a.out")
+ session = self.build_and_create_session()
+ source = self.getSourcePath("main.c")
+ lines = [line_number(source, "recurse end")]
+
+ with session.configure(LaunchArgs(program=program)) as ctx:
+ breakpoint_ids = session.resolve_source_breakpoints(source, lines)
+
+ stop_event = session.verify_stopped_on_breakpoint(
+ breakpoint_ids, after=ctx.process_event
+ )
+ thread_id = self.expect_not_none(stop_event.body.threadId)
+ stack_frames = session.stack_trace(thread_id).body.stackFrames
+
+ ids = {
+ frame.compileUnitId
+ for frame in stack_frames
+ if frame.compileUnitId is not None
+ }
+ self.assertEqual(len(ids), 1, f"expected a single compile unit, got:
{ids}")
+ compile_unit_id = ids.pop()
+ self.assertEqual(stack_frames[0].compileUnitId, compile_unit_id)
+
+ expected = CompileUnit(id=compile_unit_id, compileUnitPath=source)
+ module_id = self.expect_not_none(stack_frames[0].moduleId)
+
+ response =
session.send_request(CompileUnitsArgs(moduleId=module_id)).result()
+ all_units = response.body.compileUnits
+ self.assertIn(expected, all_units)
+ self.assertGreater(len(all_units), 1, "test needs a module with
several CUs")
+
+ response = session.send_request(
+ CompileUnitsArgs(moduleId=module_id,
compileUnitIds=[compile_unit_id])
+ ).result()
+ self.assertEqual(response.body.compileUnits, [expected])
+
+ @skipIfWindows
+ def test_unknown_compile_unit_id(self) -> None:
----------------
DrSergei wrote:
Could you add test with empty `CompileUnitsArgs` to confirm new behavior
https://github.com/llvm/llvm-project/pull/222512
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits