[lldb-dev] ThreadPlanStepOverBreakpoint behavior

Philippe Lavoie via lldb-dev lldb-dev at lists.llvm.org
Wed Nov 25 13:05:57 PST 2015

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?


From: jingham at apple.com [jingham at apple.com]
Sent: Monday, October 05, 2015 5:26 PM
To: Philippe Lavoie
Cc: lldb-dev at 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?


On Sep 25, 2015, at 1:51 PM, Philippe Lavoie via lldb-dev <lldb-dev at lists.llvm.org<mailto:lldb-dev at 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 ?

lldb-dev mailing list
lldb-dev at lists.llvm.org<mailto:lldb-dev at lists.llvm.org>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20151125/e605e10c/attachment.html>

More information about the lldb-dev mailing list