Hi all,

I've been debugging a problem on Linux where if you hit a breakpoint, then 
evaluate an expression that requires JITing, then continue LLDB will break at 
the line you were already on.  I don't know if this problem is specific to 
Linux, but that's where I'm debugging it.  This problem appears in the 
'lang/c/setvalues/TestSetValues.py' test case, but can also be reproduced 
manually.

What I'm seeing is that when the 'continue' handling calls 
Thread::SetupForResume() the current Thread reports its stop reason as 
'eStopReasonPlanComplete' because the ThreadPlan for evaluating the expression 
is still on the completed plans stack.  As a result, the 
ThreadPlanStepOverBreakpoint plan doesn't get queued.  If I add calls to 
'm_completed_plan_stack.clear()' and 'm_discarded_plan_stack.clear()' at the 
top of the 'if (GetResumeState() == eStateSuspended)' block in 
Thread::SetupForResume() then everything works as expected.

Obviously, that feels like a pretty risky thing to do, at best.  It seems like 
the expression command handling should have done something to clear the 
completed plan stack when it was finished, but as of yet I haven't found a 
place where that is appropriate.

Can anyone give me guidance on this issue?

Thanks,
Andy
_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to