jasonmolenda wrote:

Thanks @AlexK0 !  After Pavel's suggestion, I need to do a minor bit of changes 
to the patch soon I think, for all platforms, so I'll see if this is easier to 
express in ProcessWindows that way.

I've was thinking about @labath 's suggestion over the weekend and I agree that 
the way the patch is written today isn't ideal about tracking state at 
stop-time and resume-time, as I developed the change I had to change its 
behavior and I didn't rethink what I was doing.

The original goal was:  If we hit a breakpoint (whether it is enabled for this 
thread or not), when we Resume the thread, we silently instruction step past 
that breakpoint instruction before resuming.  Then I realized the problem of 
"user sets a breakpoint at $pc, or changes $pc to a BreakpointSite" and I want 
to also silently step past the breakpoint in that case, so I added a separate 
variable to track that.

Looking at the total requirements, the rule can be condensed to:  If this 
thread stopped at a BreakpointSite which it did not execute, we should execute 
the breakpoint on Resume.  In any other case, a thread sitting at a 
BreakpointSite should silently step past it and resume execution.

So when a thread stops at a BreakpointSite that has executed (whether it is 
valid for this thread or not), we record nothing.  When a thread stops at a 
BreakpointSite that has not executed, we need to record the address of that 
BreakpointSite.  And on Resume, if the thread is still at this same address, we 
want to hit the breakpoint.

I don't think we can store this information in the StopInfo easily, because a 
thread with no stop reason (e.g. a multi-threaded program that hits a 
breakpoint on one thread, but the others were executing normally) wouldn't have 
a way to record that they were sitting at a BreakpointSite that needed to be 
hit still.

I outlined the idea of storing this data in the StopInfo to @jimingham earlier 
today briefly, and he agreed that we should have StopInfos around until we 
Resume, but I hadn't thought this through enough to account for threads with no 
stop reason.  I'll check in with him about the details on this before I make 
the change, but I think I need to keep tracking this in the Thread object.

https://github.com/llvm/llvm-project/pull/96260
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to