llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-lldb Author: Chelsea Cassanova (chelcassanova) <details> <summary>Changes</summary> This commit adds a progress report when wait-attaching to a process as well as a test for this. --- Full diff: https://github.com/llvm/llvm-project/pull/144768.diff 2 Files Affected: - (modified) lldb/source/Target/Target.cpp (+2) - (modified) lldb/test/API/functionalities/progress_reporting/TestProgressReporting.py (+32) ``````````diff diff --git a/lldb/source/Target/Target.cpp b/lldb/source/Target/Target.cpp index 45a9e1196a049..8819651378791 100644 --- a/lldb/source/Target/Target.cpp +++ b/lldb/source/Target/Target.cpp @@ -3546,6 +3546,8 @@ llvm::Expected<TraceSP> Target::GetTraceOrCreate() { } Status Target::Attach(ProcessAttachInfo &attach_info, Stream *stream) { + std::unique_ptr<Progress> attach_progress; + attach_progress = std::make_unique<Progress>("Waiting to attach to process"); m_stats.SetLaunchOrAttachTime(); auto state = eStateInvalid; auto process_sp = GetProcessSP(); diff --git a/lldb/test/API/functionalities/progress_reporting/TestProgressReporting.py b/lldb/test/API/functionalities/progress_reporting/TestProgressReporting.py index 9af53845ca1b7..b0ca3939c551b 100644 --- a/lldb/test/API/functionalities/progress_reporting/TestProgressReporting.py +++ b/lldb/test/API/functionalities/progress_reporting/TestProgressReporting.py @@ -2,6 +2,7 @@ Test that we are able to broadcast and receive progress events from lldb """ import lldb +import threading import lldbsuite.test.lldbutil as lldbutil @@ -16,6 +17,37 @@ def setUp(self): self.broadcaster, lldb.SBDebugger.eBroadcastBitProgress ) + def test_wait_attach_progress_reporting(self): + """Test that progress reports for wait attaching work as intended.""" + self.build() + target = self.dbg.CreateTarget(None) + + # Wait attach to a process, then check to see that a progress report was created + # and that its message is correct for waiting to attach to a process. + class AttachThread(threading.Thread): + def __init__(self, target): + threading.Thread.__init__(self) + self.target = target + + def run(self): + self.target.AttachToProcessWithName( + lldb.SBListener(), "a.out", True, lldb.SBError() + ) + + thread = AttachThread(target) + thread.start() + + event = lldbutil.fetch_next_event(self, self.listener, self.broadcaster) + progress_data = lldb.SBDebugger.GetProgressDataFromEvent(event) + message = progress_data.GetValueForKey("message").GetStringValue(100) + self.assertGreater(len(message), 0) + self.assertEqual(message, "Waiting to attach to process") + + # Interrupt the process attach to keep the test from stalling. + target.process.SendAsyncInterrupt() + + thread.join() + def test_dwarf_symbol_loading_progress_report(self): """Test that we are able to fetch dwarf symbol loading progress events""" self.build() `````````` </details> https://github.com/llvm/llvm-project/pull/144768 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits