[Lldb-commits] [PATCH] D148548: [lldb] Improve breakpoint management for interactive scripted process

Med Ismail Bennani via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Mon Apr 17 14:25:35 PDT 2023


mib marked 3 inline comments as done.
mib added inline comments.


================
Comment at: lldb/bindings/interface/SBTargetExtensions.i:144-171
+        class watchpoints_access(object):
+            '''A helper object that will lazily hand out watchpoints for a target when supplied an index.'''
+            def __init__(self, sbtarget):
+                self.sbtarget = sbtarget
+
+            def __len__(self):
+                if self.sbtarget:
----------------
bulbazord wrote:
> Are these used at all?
Not in this patch but I feel like it should be implemented already and this goes along with the breakpoint accessors and iterator.


================
Comment at: lldb/test/API/functionalities/interactive_scripted_process/interactive_scripted_process.py:269-278
+                bkpt_file = lldb.SBFileSpec(tf.name)
+                error = self.driving_target.BreakpointsWriteToFile(bkpt_file)
+                if error.Fail():
+                    log("Failed to save breakpoints from driving target (%s)"
+                        % error.GetCString())
+                bkpts_list = lldb.SBBreakpointList(self.target)
+                error = self.target.BreakpointsCreateFromFile(bkpt_file, bkpts_list)
----------------
bulbazord wrote:
> It's interesting that we dump to a file. It'd be cool if we could dump it to a StructuredData or something instead of a file.
100% agree, I'll do that as a followup.


================
Comment at: lldb/test/API/functionalities/interactive_scripted_process/interactive_scripted_process.py:282
+            if error.Success():
+                self.driving_target.DeleteAllBreakpoints()
+                for bkpt in self.target.breakpoints:
----------------
bulbazord wrote:
> Why do we delete all of the breakpoints just to re-set them afterwards? Is there a difference between what we set and what was there before?
There could be: Let's say the user set a breakpoint on the driving target (A) and a different one on the multiplexer target (B). We need first to copy all the driving target breakpoints to the multiplexer target, delete them and copy back all the multiplexer target breakpoints (A + B) to the driving target, to keep them in sync.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D148548/new/

https://reviews.llvm.org/D148548



More information about the lldb-commits mailing list