labath added a comment.

In http://reviews.llvm.org/D18692#389529, @clayborg wrote:

> Looks fine. We should probably put the code that checks for a breakpoint at 
> the thread PC into a function since it is done about 5 times in this function.


I'll prepare a follow-up to deduplicate the code here.

In http://reviews.llvm.org/D18692#389651, @jingham wrote:

> The only worry I have about this is
>
> - thread A is stopped at a breakpoint, and then we stop on thread B instead, 
> then we report a breakpoint, great!
> - The user steps thread B, which we do by suspending thread B and stepping A.
> - Then A stops, and we report ANOTHER hit on thread B.
>
>   Your fix looks better than what was there previously.  If it is easy to 
> check "last stop reason was this breakpoint hit, and this thread's temporary 
> resume state is suspended, then don't report the hit, that would be more 
> accurate.


I tried to do the following:

- have two threads: A and B
- hit a breakpoint on thread A
- switch to thread B and resume it
- hit a breakpoint on thread B

After this, thread A still reports as being stopped at a breakpoint, but:

- the breakpoint is not counted as hit twice
- the code I am changing is not even executed, as we back out of this function 
early due to `thread_sp->StopInfoIsUpToDate()` being true

So, while I could easily add the check for eStateSuspended, it seems that this 
situation is already handled elsewhere (probably by 
Thread::IsStillAtLastBreakpointHit, although I'm not that familiar with this 
code). Which makes sense as this situation could happen even for normal 
breakpoint hits, not just the ones I "simulate" here.

Does that make sense?


http://reviews.llvm.org/D18692



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to