Sorry for the delay, I revisited the issue today.

It is causing a problem for our architecture which does not support single 
instruction stepping. We emulate it with breakpoints and a processor exception 
on branch taken.

For example:

When we step over a line with a breakpoint, our flavor of StepOverRange inserts 
a breakpoint at the next likely instruction and enables processor branch 
exception. LLDB will queue StepOverRange and StepOverBreakpoint plans.

The problem occurs when we stop on the breakpoint inserted by StepOverRange. 
ThreadPlanStepOverBreakpoint::DoPlanExplainsStop will see the stop reason is 
eStopReasonBreakpoint and ignore the breakpoint. Then StepOverRange's 
DoPlanExplainsStop will claim it and ThreadPlanStepOverBreakpoint gets 
discarded and does not reinsert the original breakpoint.

Is there a way to make our scenario fit in the default thread plans?
Maybe check the breakpoint kind of all 'step' breakpoints and set the thread's 
StopReason to Trace?

-Philippe

________________________________
From: jing...@apple.com [jing...@apple.com]
Sent: Monday, October 05, 2015 5:26 PM
To: Philippe Lavoie
Cc: lldb-dev@lists.llvm.org
Subject: Re: [lldb-dev] ThreadPlanStepOverBreakpoint behavior

That is intended behavior.  MischiefManaged is called when an stop propagates 
to that plan, and it needs to decide whether it is done or not.  That’s not 
what happens when somebody decides to discard the plan.  WillPop will get 
called if you need to do some cleanup when the plan gets popped.

Was this causing some problem?

Jim

On Sep 25, 2015, at 1:51 PM, Philippe Lavoie via lldb-dev 
<lldb-dev@lists.llvm.org<mailto:lldb-dev@lists.llvm.org>> wrote:


I noticed that when a ThreadPlanStepOverBreakpoint is discarded (as opposed to 
being popped from the stack), MischiefManaged() is not called and the disabled 
breakpoint is not re-enabled.

Is this the intended behavior ?

-Philippe
_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org<mailto:lldb-dev@lists.llvm.org>
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

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

Reply via email to