LLDB mainline
|
#include <ThreadPlan.h>
Public Types | |
enum | ThreadPlanKind { eKindGeneric , eKindNull , eKindBase , eKindCallFunction , eKindPython , eKindStepInstruction , eKindStepOut , eKindStepOverBreakpoint , eKindStepOverRange , eKindStepInRange , eKindRunToAddress , eKindStepThrough , eKindStepUntil , eKindSingleThreadTimeout } |
Public Member Functions | |
virtual | ~ThreadPlan () |
const char * | GetName () const |
Returns the name of this thread plan. | |
Thread & | GetThread () |
Returns the Thread that is using this thread plan. | |
Target & | GetTarget () |
const Target & | GetTarget () const |
void | ClearThreadCache () |
Clear the Thread* cache. | |
virtual void | GetDescription (Stream *s, lldb::DescriptionLevel level)=0 |
Print a description of this thread to the stream s. | |
virtual bool | ValidatePlan (Stream *error)=0 |
Returns whether this plan could be successfully created. | |
bool | TracerExplainsStop () |
lldb::StateType | RunState () |
bool | PlanExplainsStop (Event *event_ptr) |
virtual bool | ShouldStop (Event *event_ptr)=0 |
virtual bool | ShouldAutoContinue (Event *event_ptr) |
Returns whether this thread plan overrides the ShouldStop of subsequently processed plans. | |
virtual Vote | ShouldReportStop (Event *event_ptr) |
Vote | ShouldReportRun (Event *event_ptr) |
virtual void | SetStopOthers (bool new_value) |
virtual bool | StopOthers () |
virtual bool | ShouldRunBeforePublicStop () |
bool | WillResume (lldb::StateType resume_state, bool current_plan) |
virtual bool | WillStop ()=0 |
bool | IsControllingPlan () |
virtual bool | IsLeafPlan () |
bool | SetIsControllingPlan (bool value) |
virtual bool | OkayToDiscard () |
void | SetOkayToDiscard (bool value) |
virtual bool | MischiefManaged () |
virtual void | ThreadDestroyed () |
bool | GetPrivate () |
void | SetPrivate (bool input) |
virtual void | DidPush () |
virtual void | DidPop () |
ThreadPlanKind | GetKind () const |
bool | IsPlanComplete () |
void | SetPlanComplete (bool success=true) |
virtual bool | IsPlanStale () |
bool | PlanSucceeded () |
virtual bool | IsBasePlan () |
lldb::ThreadPlanTracerSP & | GetThreadPlanTracer () |
void | SetThreadPlanTracer (lldb::ThreadPlanTracerSP new_tracer_sp) |
void | DoTraceLog () |
virtual lldb::ValueObjectSP | GetReturnValueObject () |
virtual lldb::ExpressionVariableSP | GetExpressionVariable () |
virtual void | RestoreThreadState () |
virtual bool | IsVirtualStep () |
bool | SetIterationCount (size_t count) |
virtual lldb::StateType | GetPlanRunState ()=0 |
Public Member Functions inherited from lldb_private::UserID | |
UserID (lldb::user_id_t uid=LLDB_INVALID_UID) | |
Construct with optional user ID. | |
~UserID ()=default | |
Destructor. | |
void | Clear () |
Clears the object state. | |
lldb::user_id_t | GetID () const |
Get accessor for the user ID. | |
void | SetID (lldb::user_id_t uid) |
Set accessor for the user ID. | |
Protected Member Functions | |
ThreadPlan (ThreadPlanKind kind, const char *name, Thread &thread, Vote report_stop_vote, Vote report_run_vote) | |
virtual bool | DoWillResume (lldb::StateType resume_state, bool current_plan) |
virtual bool | DoPlanExplainsStop (Event *event_ptr)=0 |
void | PushPlan (lldb::ThreadPlanSP &thread_plan_sp) |
ThreadPlan * | GetPreviousPlan () |
lldb::StopInfoSP | GetPrivateStopInfo () |
void | SetStopInfo (lldb::StopInfoSP stop_reason_sp) |
bool | IsUsuallyUnexplainedStopReason (lldb::StopReason) |
Protected Attributes | |
Status | m_status |
Process & | m_process |
lldb::tid_t | m_tid |
Vote | m_report_stop_vote |
Vote | m_report_run_vote |
bool | m_takes_iteration_count |
bool | m_could_not_resolve_hw_bp |
int32_t | m_iteration_count = 1 |
Protected Attributes inherited from lldb_private::UserID | |
lldb::user_id_t | m_uid |
The user ID that uniquely identifies an object. | |
Private Member Functions | |
void | CachePlanExplainsStop (bool does_explain) |
ThreadPlan (const ThreadPlan &)=delete | |
const ThreadPlan & | operator= (const ThreadPlan &)=delete |
Static Private Member Functions | |
static lldb::user_id_t | GetNextID () |
Private Attributes | |
Thread * | m_thread |
ThreadPlanKind | m_kind |
std::string | m_name |
std::recursive_mutex | m_plan_complete_mutex |
LazyBool | m_cached_plan_explains_stop |
bool | m_plan_complete |
bool | m_plan_private |
bool | m_okay_to_discard |
bool | m_is_controlling_plan |
bool | m_plan_succeeded |
lldb::ThreadPlanTracerSP | m_tracer_sp |
Definition at line 287 of file ThreadPlan.h.
Definition at line 292 of file ThreadPlan.h.
|
virtualdefault |
|
protected |
Definition at line 23 of file ThreadPlan.cpp.
References GetNextID(), and lldb_private::UserID::SetID().
|
privatedelete |
|
inlineprivate |
Definition at line 545 of file ThreadPlan.h.
References lldb_private::eLazyBoolNo, lldb_private::eLazyBoolYes, and m_cached_plan_explains_stop.
Referenced by PlanExplainsStop().
void ThreadPlan::ClearThreadCache | ( | ) |
Clear the Thread* cache.
This is useful in situations like when a new Thread list is being generated.
Definition at line 103 of file ThreadPlan.cpp.
References m_thread.
Referenced by WillResume().
|
virtual |
Reimplemented in lldb_private::ThreadPlanCallFunction, lldb_private::ThreadPlanCallUserExpression, lldb_private::ThreadPlanSingleThreadTimeout, lldb_private::ThreadPlanStepOverBreakpoint, and lldb_private::StopInfoWatchpoint::ThreadPlanStepOverWatchpoint.
Definition at line 153 of file ThreadPlan.cpp.
|
virtual |
Reimplemented in lldb_private::ScriptedThreadPlan, lldb_private::ThreadPlanCallFunction, lldb_private::ThreadPlanCallOnFunctionExit, lldb_private::ThreadPlanCallUserExpression, lldb_private::ThreadPlanStepOut, lldb_private::ThreadPlanStepOverRange, lldb_private::ThreadPlanStepRange, lldb_private::ThreadPlanStepThrough, and lldb_private::AppleThreadPlanStepThroughObjCTrampoline.
Definition at line 151 of file ThreadPlan.cpp.
|
protectedpure virtual |
Implemented in lldb_private::ScriptedThreadPlan, lldb_private::ThreadPlanNull, lldb_private::ThreadPlanBase, lldb_private::ThreadPlanCallFunction, lldb_private::ThreadPlanCallOnFunctionExit, lldb_private::ThreadPlanRunToAddress, lldb_private::ThreadPlanSingleThreadTimeout, lldb_private::ThreadPlanStepInRange, lldb_private::ThreadPlanStepInstruction, lldb_private::ThreadPlanStepOut, lldb_private::ThreadPlanStepOverBreakpoint, lldb_private::ThreadPlanStepOverRange, lldb_private::ThreadPlanStepThrough, lldb_private::ThreadPlanStepUntil, lldb_private::AppleThreadPlanStepThroughObjCTrampoline, lldb_private::AppleThreadPlanStepThroughDirectDispatch, and lldb_private::StopInfoWatchpoint::ThreadPlanStepOverWatchpoint.
Referenced by PlanExplainsStop().
|
inline |
Definition at line 449 of file ThreadPlan.h.
References m_tracer_sp.
Referenced by lldb_private::Thread::ShouldStop().
|
inlineprotectedvirtual |
Reimplemented in lldb_private::ScriptedThreadPlan, lldb_private::ThreadPlanBase, lldb_private::ThreadPlanStepInRange, lldb_private::ThreadPlanStepOut, lldb_private::ThreadPlanStepOverBreakpoint, lldb_private::ThreadPlanStepOverRange, lldb_private::ThreadPlanStepThrough, lldb_private::ThreadPlanStepUntil, lldb_private::AppleThreadPlanStepThroughDirectDispatch, and lldb_private::StopInfoWatchpoint::ThreadPlanStepOverWatchpoint.
Definition at line 501 of file ThreadPlan.h.
Referenced by WillResume().
|
pure virtual |
Print a description of this thread to the stream s.
thread. Don't expect that the result of GetThread is valid in the description method. This might get called when the underlying Thread has not been reported, so we only know the TID and not the thread.
[in] | s | The stream to which to print the description. |
[in] | level | The level of description desired. Note that eDescriptionLevelBrief will be used in the stop message printed when the plan is complete. |
Implemented in lldb_private::ScriptedThreadPlan, lldb_private::ThreadPlanNull, lldb_private::ThreadPlanBase, lldb_private::ThreadPlanCallFunction, lldb_private::ThreadPlanCallFunctionUsingABI, lldb_private::ThreadPlanCallOnFunctionExit, lldb_private::ThreadPlanCallUserExpression, lldb_private::ThreadPlanRunToAddress, lldb_private::ThreadPlanSingleThreadTimeout, lldb_private::ThreadPlanStepInRange, lldb_private::ThreadPlanStepInstruction, lldb_private::ThreadPlanStepOut, lldb_private::ThreadPlanStepOverBreakpoint, lldb_private::ThreadPlanStepOverRange, lldb_private::ThreadPlanStepThrough, lldb_private::ThreadPlanStepUntil, lldb_private::AppleThreadPlanStepThroughObjCTrampoline, lldb_private::AppleThreadPlanStepThroughDirectDispatch, and lldb_private::ThreadPlanStepRange.
|
inlinevirtual |
Reimplemented in lldb_private::ThreadPlanCallUserExpression.
Definition at line 470 of file ThreadPlan.h.
|
inline |
Definition at line 431 of file ThreadPlan.h.
References m_kind.
Referenced by lldb_private::ThreadPlanStepInRange::DefaultShouldStopHereCallback(), lldb_private::ThreadPlanStepRange::InRange(), lldb_private::ThreadPlanStepRange::SetNextBranchBreakpoint(), and lldb_private::Thread::SetupForResume().
|
inline |
Returns the name of this thread plan.
Definition at line 315 of file ThreadPlan.h.
References m_name.
Referenced by lldb_private::Thread::ShouldStop().
|
staticprivate |
Definition at line 146 of file ThreadPlan.cpp.
Referenced by ThreadPlan().
|
pure virtual |
Implemented in lldb_private::ScriptedThreadPlan, lldb_private::ThreadPlanNull, lldb_private::ThreadPlanBase, lldb_private::ThreadPlanCallFunction, lldb_private::ThreadPlanCallOnFunctionExit, lldb_private::ThreadPlanRunToAddress, lldb_private::ThreadPlanSingleThreadTimeout, lldb_private::ThreadPlanStepInstruction, lldb_private::ThreadPlanStepOut, lldb_private::ThreadPlanStepOverBreakpoint, lldb_private::ThreadPlanStepRange, lldb_private::ThreadPlanStepThrough, lldb_private::ThreadPlanStepUntil, and lldb_private::AppleThreadPlanStepThroughObjCTrampoline.
Referenced by lldb_private::ThreadPlanSingleThreadTimeout::GetPlanRunState(), and RunState().
|
inlineprotected |
Definition at line 520 of file ThreadPlan.h.
References lldb_private::Thread::GetPreviousPlan(), and GetThread().
Referenced by lldb_private::ThreadPlanSingleThreadTimeout::GetPlanRunState(), lldb_private::ThreadPlanSingleThreadTimeout::HandleEvent(), lldb_private::ThreadPlanSingleThreadTimeout::SetStopOthers(), ShouldReportRun(), ShouldReportStop(), StopOthers(), and lldb_private::ThreadPlanSingleThreadTimeout::StopOthers().
|
inline |
Definition at line 423 of file ThreadPlan.h.
References m_plan_private.
|
inlineprotected |
Definition at line 525 of file ThreadPlan.h.
References lldb_private::Thread::GetPrivateStopInfo(), and GetThread().
Referenced by lldb_private::ThreadPlanStepUntil::AnalyzeStop(), lldb_private::ThreadPlanCallFunction::BreakpointsExplainStop(), lldb_private::ThreadPlanStepRange::ClearNextBranchBreakpointExplainedStop(), lldb_private::ThreadPlanCallFunction::DoPlanExplainsStop(), lldb_private::ThreadPlanStepInRange::DoPlanExplainsStop(), lldb_private::ThreadPlanStepInstruction::DoPlanExplainsStop(), lldb_private::ThreadPlanStepOut::DoPlanExplainsStop(), lldb_private::ThreadPlanStepOverBreakpoint::DoPlanExplainsStop(), lldb_private::ThreadPlanStepOverRange::DoPlanExplainsStop(), lldb_private::AppleThreadPlanStepThroughDirectDispatch::DoPlanExplainsStop(), lldb_private::ThreadPlanCallFunction::DoTakedown(), lldb_private::ThreadPlanCallFunction::GetRealStopInfo(), lldb_private::ThreadPlanBase::ShouldStop(), and lldb_private::ThreadPlanStepUntil::ShouldStop().
|
inlinevirtual |
Reimplemented in lldb_private::ThreadPlanCallFunction, and lldb_private::ThreadPlanStepOut.
Definition at line 459 of file ThreadPlan.h.
Target & ThreadPlan::GetTarget | ( | ) |
Definition at line 38 of file ThreadPlan.cpp.
References lldb_private::Process::GetTarget(), and m_process.
Referenced by lldb_private::AppleThreadPlanStepThroughDirectDispatch::AppleThreadPlanStepThroughDirectDispatch(), lldb_private::ThreadPlanStepUntil::Clear(), lldb_private::ThreadPlanStepRange::ClearNextBranchBreakpoint(), lldb_private::ThreadPlanCallFunction::ConstructorSetup(), lldb_private::ThreadPlanStepOut::DoWillResume(), lldb_private::ThreadPlanStepUntil::DoWillResume(), lldb_private::ThreadPlanStepRange::DumpRanges(), lldb_private::ThreadPlanCallFunction::GetDescription(), lldb_private::ThreadPlanCallFunctionUsingABI::GetDescription(), lldb_private::ThreadPlanRunToAddress::GetDescription(), lldb_private::ThreadPlanStepOut::GetDescription(), lldb_private::ThreadPlanStepRange::GetInstructionsForAddress(), lldb_private::ThreadPlanStepRange::InRange(), lldb_private::ThreadPlanStepRange::InSymbol(), lldb_private::ThreadPlanStepInstruction::IsPlanStale(), lldb_private::ThreadPlanStepRange::IsPlanStale(), lldb_private::ThreadPlanRunToAddress::MischiefManaged(), lldb_private::ThreadPlanStepOut::MischiefManaged(), lldb_private::ThreadPlanStepOut::QueueInlinedStepPlan(), lldb_private::ThreadPlanRunToAddress::SetInitialBreakpoints(), lldb_private::ThreadPlanStepRange::SetNextBranchBreakpoint(), lldb_private::ThreadPlanStepInRange::ShouldStop(), lldb_private::ThreadPlanStepInstruction::ShouldStop(), lldb_private::ThreadPlanStepOverRange::ShouldStop(), lldb_private::ThreadPlanStepOut::ThreadPlanStepOut(), lldb_private::ThreadPlanStepRange::ThreadPlanStepRange(), lldb_private::ThreadPlanStepOut::WillStop(), lldb_private::ThreadPlanStepUntil::WillStop(), lldb_private::AppleThreadPlanStepThroughDirectDispatch::~AppleThreadPlanStepThroughDirectDispatch(), lldb_private::ThreadPlanRunToAddress::~ThreadPlanRunToAddress(), and lldb_private::ThreadPlanStepOut::~ThreadPlanStepOut().
const Target & ThreadPlan::GetTarget | ( | ) | const |
Definition at line 40 of file ThreadPlan.cpp.
References lldb_private::Process::GetTarget(), and m_process.
Thread & ThreadPlan::GetThread | ( | ) |
Returns the Thread that is using this thread plan.
Definition at line 42 of file ThreadPlan.cpp.
References lldb_private::ThreadList::FindThreadByID(), lldb_private::Process::GetThreadList(), m_process, m_thread, and m_tid.
Referenced by lldb_private::ThreadPlanStepUntil::AnalyzeStop(), lldb_private::AppleThreadPlanStepThroughDirectDispatch::AppleThreadPlanStepThroughDirectDispatch(), lldb_private::ThreadPlanRunToAddress::AtOurAddress(), lldb_private::ThreadPlanStepOut::CalculateReturnValue(), lldb_private::ThreadPlanStepRange::CompareCurrentFrameToStartFrame(), lldb_private::ThreadPlanShouldStopHere::DefaultShouldStopHereCallback(), lldb_private::ThreadPlanStepInRange::DefaultShouldStopHereCallback(), lldb_private::ThreadPlanShouldStopHere::DefaultStepFromHereCallback(), lldb_private::ThreadPlanCallFunction::DidPush(), lldb_private::ThreadPlanCallOnFunctionExit::DidPush(), lldb_private::ThreadPlanStepOut::DidPush(), lldb_private::ThreadPlanNull::DoPlanExplainsStop(), lldb_private::ThreadPlanStepOut::DoPlanExplainsStop(), lldb_private::ThreadPlanStepOverBreakpoint::DoPlanExplainsStop(), lldb_private::AppleThreadPlanStepThroughDirectDispatch::DoPlanExplainsStop(), lldb_private::StopInfoWatchpoint::ThreadPlanStepOverWatchpoint::DoPlanExplainsStop(), lldb_private::ThreadPlanCallFunction::DoTakedown(), lldb_private::ThreadPlanStepInRange::DoWillResume(), lldb_private::ThreadPlanStepOverRange::DoWillResume(), lldb_private::StopInfoWatchpoint::ThreadPlanStepOverWatchpoint::DoWillResume(), lldb_private::ThreadPlanStepInRange::FrameMatchesAvoidCriteria(), lldb_private::ThreadPlanNull::GetPlanRunState(), GetPreviousPlan(), GetPrivateStopInfo(), lldb_private::ThreadPlanSingleThreadTimeout::GetRemainingTimeoutMilliSeconds(), lldb_private::ThreadPlanSingleThreadTimeout::HandleEvent(), lldb_private::ThreadPlanSingleThreadTimeout::HandleTimeout(), lldb_private::ThreadPlanStepThrough::HitOurBackstopBreakpoint(), lldb_private::AppleThreadPlanStepThroughObjCTrampoline::InitializeFunctionCaller(), lldb_private::ThreadPlanStepRange::InRange(), lldb_private::ThreadPlanStepRange::InSymbol(), lldb_private::ThreadPlanShouldStopHere::InvokeShouldStopHereCallback(), lldb_private::ThreadPlanStepInstruction::IsPlanStale(), lldb_private::ThreadPlanStepOut::IsPlanStale(), lldb_private::ThreadPlanStepOverBreakpoint::IsPlanStale(), lldb_private::ThreadPlanStepRange::IsPlanStale(), lldb_private::ThreadPlanSingleThreadTimeout::IsTimeoutAsyncInterrupt(), lldb_private::ThreadPlanStepThrough::LookForPlanToStepThroughFromCurrentPC(), lldb_private::ThreadPlanNull::MischiefManaged(), lldb_private::ThreadPlanCallUserExpression::MischiefManaged(), lldb_private::ThreadPlanStepOverBreakpoint::MischiefManaged(), PushPlan(), lldb_private::ThreadPlanStepOut::QueueInlinedStepPlan(), lldb_private::ThreadPlanCallFunction::ReportRegisterState(), lldb_private::StopInfoWatchpoint::ThreadPlanStepOverWatchpoint::ResetWatchpoint(), lldb_private::ThreadPlanCallFunction::RestoreThreadState(), lldb_private::ThreadPlanStepRange::SetNextBranchBreakpoint(), lldb_private::ThreadPlanCallFunction::SetReturnValue(), lldb_private::ThreadPlanCallFunctionUsingABI::SetReturnValue(), SetStopInfo(), lldb_private::ThreadPlanStepInRange::SetupAvoidNoDebug(), lldb_private::ThreadPlanStepOut::SetupAvoidNoDebug(), lldb_private::ThreadPlanStepOverRange::SetupAvoidNoDebug(), lldb_private::ThreadPlanStepInstruction::SetUpState(), lldb_private::ThreadPlanBase::ShouldReportStop(), lldb_private::ThreadPlanNull::ShouldStop(), lldb_private::ThreadPlanBase::ShouldStop(), lldb_private::ThreadPlanStepInRange::ShouldStop(), lldb_private::ThreadPlanStepInstruction::ShouldStop(), lldb_private::ThreadPlanStepOut::ShouldStop(), lldb_private::ThreadPlanStepOverRange::ShouldStop(), lldb_private::AppleThreadPlanStepThroughObjCTrampoline::ShouldStop(), lldb_private::AppleThreadPlanStepThroughDirectDispatch::ShouldStop(), lldb_private::StopInfoWatchpoint::ThreadPlanStepOverWatchpoint::ShouldStop(), lldb_private::ThreadPlanStepThrough::ThreadPlanStepThrough(), lldb_private::ThreadPlanSingleThreadTimeout::TimeoutThreadFunc(), lldb_private::ThreadPlanNull::ValidatePlan(), WillResume(), and lldb_private::ThreadPlanNull::WillStop().
|
inline |
Definition at line 443 of file ThreadPlan.h.
References m_tracer_sp.
|
inlinevirtual |
Reimplemented in lldb_private::ThreadPlanNull, and lldb_private::ThreadPlanBase.
Definition at line 441 of file ThreadPlan.h.
Referenced by lldb_private::Thread::ShouldReportStop(), and lldb_private::Thread::ShouldStop().
|
inline |
Definition at line 397 of file ThreadPlan.h.
References m_is_controlling_plan.
Referenced by lldb_private::ThreadPlanStepOverRange::DidPush(), lldb_private::ThreadPlanStepOverRange::DoWillResume(), OkayToDiscard(), and lldb_private::Thread::ShouldStop().
|
inlinevirtual |
Reimplemented in lldb_private::ThreadPlanSingleThreadTimeout.
Definition at line 402 of file ThreadPlan.h.
Referenced by lldb_private::Thread::ShouldStop().
bool ThreadPlan::IsPlanComplete | ( | ) |
Definition at line 61 of file ThreadPlan.cpp.
References m_plan_complete, and m_plan_complete_mutex.
Referenced by lldb_private::ThreadPlanCallFunction::DoTakedown(), lldb_private::ScriptedThreadPlan::MischiefManaged(), lldb_private::ThreadPlanCallFunction::MischiefManaged(), lldb_private::ThreadPlanCallUserExpression::MischiefManaged(), lldb_private::ThreadPlanStepInstruction::MischiefManaged(), lldb_private::ThreadPlanStepOut::MischiefManaged(), lldb_private::ThreadPlanStepRange::MischiefManaged(), lldb_private::ThreadPlanStepThrough::MischiefManaged(), lldb_private::ThreadPlanStepUntil::MischiefManaged(), lldb_private::AppleThreadPlanStepThroughObjCTrampoline::MischiefManaged(), lldb_private::AppleThreadPlanStepThroughDirectDispatch::MischiefManaged(), lldb_private::ThreadPlanCallFunction::ShouldReportStop(), lldb_private::ThreadPlanStepRange::ShouldReportStop(), lldb_private::Thread::ShouldStop(), lldb_private::ThreadPlanCallFunction::ShouldStop(), lldb_private::ThreadPlanStepInRange::ShouldStop(), lldb_private::ThreadPlanStepOut::ShouldStop(), and lldb_private::ThreadPlanStepThrough::ShouldStop().
|
inlinevirtual |
Reimplemented in lldb_private::ScriptedThreadPlan, lldb_private::ThreadPlanStepInstruction, lldb_private::ThreadPlanStepOut, lldb_private::ThreadPlanStepOverBreakpoint, and lldb_private::ThreadPlanStepRange.
Definition at line 437 of file ThreadPlan.h.
Referenced by lldb_private::Thread::ShouldStop().
|
protected |
Definition at line 166 of file ThreadPlan.cpp.
References lldb::eStopReasonException, lldb::eStopReasonExec, lldb::eStopReasonFork, lldb::eStopReasonInstrumentation, lldb::eStopReasonInterrupt, lldb::eStopReasonSignal, lldb::eStopReasonThreadExiting, lldb::eStopReasonVFork, lldb::eStopReasonVForkDone, and lldb::eStopReasonWatchpoint.
Referenced by lldb_private::ThreadPlanStepUntil::AnalyzeStop(), lldb_private::ThreadPlanStepInRange::DoPlanExplainsStop(), and lldb_private::ThreadPlanStepOut::DoPlanExplainsStop().
|
inlinevirtual |
Reimplemented in lldb_private::ThreadPlanStepInRange.
Definition at line 480 of file ThreadPlan.h.
|
virtual |
Reimplemented in lldb_private::ScriptedThreadPlan, lldb_private::ThreadPlanNull, lldb_private::ThreadPlanBase, lldb_private::ThreadPlanCallFunction, lldb_private::ThreadPlanCallUserExpression, lldb_private::ThreadPlanRunToAddress, lldb_private::ThreadPlanSingleThreadTimeout, lldb_private::ThreadPlanStepInstruction, lldb_private::ThreadPlanStepOut, lldb_private::ThreadPlanStepOverBreakpoint, lldb_private::ThreadPlanStepRange, lldb_private::ThreadPlanStepThrough, lldb_private::ThreadPlanStepUntil, lldb_private::AppleThreadPlanStepThroughObjCTrampoline, and lldb_private::AppleThreadPlanStepThroughDirectDispatch.
Definition at line 72 of file ThreadPlan.cpp.
References m_plan_complete, and m_plan_complete_mutex.
Referenced by lldb_private::ThreadPlanCallFunction::MischiefManaged(), lldb_private::ThreadPlanCallUserExpression::MischiefManaged(), lldb_private::ThreadPlanRunToAddress::MischiefManaged(), lldb_private::ThreadPlanStepInstruction::MischiefManaged(), lldb_private::ThreadPlanStepOut::MischiefManaged(), lldb_private::ThreadPlanStepOverBreakpoint::MischiefManaged(), lldb_private::ThreadPlanStepRange::MischiefManaged(), lldb_private::ThreadPlanStepThrough::MischiefManaged(), lldb_private::ThreadPlanStepUntil::MischiefManaged(), and lldb_private::Thread::ShouldStop().
|
virtual |
Reimplemented in lldb_private::ThreadPlanNull, and lldb_private::ThreadPlanBase.
Definition at line 155 of file ThreadPlan.cpp.
References IsControllingPlan(), and m_okay_to_discard.
Referenced by lldb_private::Thread::ShouldStop().
|
privatedelete |
bool ThreadPlan::PlanExplainsStop | ( | Event * | event_ptr | ) |
Definition at line 51 of file ThreadPlan.cpp.
References CachePlanExplainsStop(), DoPlanExplainsStop(), lldb_private::eLazyBoolCalculate, lldb_private::eLazyBoolYes, and m_cached_plan_explains_stop.
Referenced by lldb_private::Thread::ShouldReportStop(), and lldb_private::Thread::ShouldStop().
|
inline |
Definition at line 439 of file ThreadPlan.h.
References m_plan_succeeded.
Referenced by lldb_private::ThreadPlanCallFunction::DidPop(), lldb_private::ThreadPlanCallUserExpression::MischiefManaged(), and lldb_private::ThreadPlanCallFunction::~ThreadPlanCallFunction().
|
inlineprotected |
Definition at line 510 of file ThreadPlan.h.
References GetThread(), and lldb_private::Thread::PushPlan().
Referenced by lldb_private::ThreadPlanStepThrough::DidPush(), lldb_private::AppleThreadPlanStepThroughObjCTrampoline::InitializeFunctionCaller(), lldb_private::ThreadPlanStepThrough::ShouldStop(), and lldb_private::AppleThreadPlanStepThroughObjCTrampoline::ShouldStop().
|
inlinevirtual |
Reimplemented in lldb_private::ThreadPlanCallFunction.
Definition at line 478 of file ThreadPlan.h.
lldb::StateType ThreadPlan::RunState | ( | ) |
Definition at line 159 of file ThreadPlan.cpp.
References lldb::eStateStepping, GetPlanRunState(), and m_tracer_sp.
|
inline |
Definition at line 404 of file ThreadPlan.h.
References m_is_controlling_plan.
Referenced by lldb_private::ThreadPlanCallFunction::ConstructorSetup(), lldb::SBThread::ResumeNewPlan(), lldb_private::ScriptedThreadPlan::ScriptedThreadPlan(), lldb_private::ThreadPlanBase::ThreadPlanBase(), lldb_private::ThreadPlanCallOnFunctionExit::ThreadPlanCallOnFunctionExit(), and lldb_private::ThreadPlanCallUserExpression::ThreadPlanCallUserExpression().
|
inline |
Definition at line 482 of file ThreadPlan.h.
References m_iteration_count, and m_takes_iteration_count.
|
inline |
Definition at line 412 of file ThreadPlan.h.
References m_okay_to_discard.
Referenced by lldb_private::ThreadPlanCallFunction::ConstructorSetup(), lldb_private::ThreadPlanStepOut::QueueInlinedStepPlan(), lldb::SBThread::ResumeNewPlan(), lldb_private::ScriptedThreadPlan::ScriptedThreadPlan(), and lldb_private::ThreadPlanCallUserExpression::ThreadPlanCallUserExpression().
void ThreadPlan::SetPlanComplete | ( | bool | success = true | ) |
Definition at line 66 of file ThreadPlan.cpp.
References m_plan_complete, m_plan_complete_mutex, and m_plan_succeeded.
Referenced by lldb_private::ThreadPlanStepUntil::AnalyzeStop(), lldb_private::ThreadPlanCallFunction::BreakpointsExplainStop(), lldb_private::ScriptedThreadPlan::DidPush(), lldb_private::ScriptedThreadPlan::DoPlanExplainsStop(), lldb_private::ThreadPlanCallFunction::DoPlanExplainsStop(), lldb_private::ThreadPlanStepOut::DoPlanExplainsStop(), lldb_private::AppleThreadPlanStepThroughDirectDispatch::DoPlanExplainsStop(), lldb_private::ThreadPlanCallFunction::DoTakedown(), lldb_private::ScriptedThreadPlan::IsPlanStale(), lldb_private::ThreadPlanStepInstruction::IsPlanStale(), lldb_private::ThreadPlanStepRange::IsPlanStale(), lldb_private::ScriptedThreadPlan::ScriptedThreadPlan(), lldb_private::ScriptedThreadPlan::ShouldStop(), lldb_private::ThreadPlanCallOnFunctionExit::ShouldStop(), lldb_private::ThreadPlanStepInRange::ShouldStop(), lldb_private::ThreadPlanStepInstruction::ShouldStop(), lldb_private::ThreadPlanStepOut::ShouldStop(), lldb_private::ThreadPlanStepOverRange::ShouldStop(), lldb_private::ThreadPlanStepThrough::ShouldStop(), lldb_private::AppleThreadPlanStepThroughObjCTrampoline::ShouldStop(), and lldb_private::AppleThreadPlanStepThroughDirectDispatch::ShouldStop().
|
inline |
Definition at line 425 of file ThreadPlan.h.
References m_plan_private.
Referenced by lldb_private::ThreadPlanCallFunction::ConstructorSetup(), and lldb_private::ScriptedThreadPlan::ScriptedThreadPlan().
|
inlineprotected |
Definition at line 529 of file ThreadPlan.h.
References GetThread(), and lldb_private::Thread::SetStopInfo().
Referenced by lldb_private::ThreadPlanStepInRange::DoWillResume().
|
virtual |
Reimplemented in lldb_private::ScriptedThreadPlan, lldb_private::ThreadPlanCallFunction, lldb_private::ThreadPlanRunToAddress, lldb_private::ThreadPlanSingleThreadTimeout, lldb_private::ThreadPlanStepOut, and lldb_private::ThreadPlanStepOverRange.
Definition at line 111 of file ThreadPlan.cpp.
Referenced by lldb_private::ThreadPlanSingleThreadTimeout::HandleEvent(), and lldb_private::ThreadPlanSingleThreadTimeout::SetStopOthers().
|
inline |
Definition at line 445 of file ThreadPlan.h.
References m_tracer_sp.
Referenced by lldb_private::ThreadPlanBase::ThreadPlanBase().
|
inlinevirtual |
Returns whether this thread plan overrides the ShouldStop
of subsequently processed plans.
When processing the thread plan stack, this function gives plans the ability to continue - even when subsequent plans return true from ShouldStop
.
Reimplemented in lldb_private::ThreadPlanStepOverBreakpoint.
Definition at line 376 of file ThreadPlan.h.
Referenced by lldb_private::Thread::ShouldStop().
Definition at line 94 of file ThreadPlan.cpp.
References lldb_private::eVoteNoOpinion, GetPreviousPlan(), m_report_run_vote, and ShouldReportRun().
Referenced by lldb_private::Thread::ShouldReportRun(), and ShouldReportRun().
Reimplemented in lldb_private::ThreadPlanBase, lldb_private::ThreadPlanCallFunction, and lldb_private::ThreadPlanStepRange.
Definition at line 79 of file ThreadPlan.cpp.
References lldb_private::eVoteNoOpinion, lldb_private::GetLog(), GetPreviousPlan(), LLDB_LOG, m_report_stop_vote, ShouldReportStop(), and lldb_private::Step.
Referenced by lldb_private::Thread::ShouldReportStop(), ShouldReportStop(), and lldb_private::ThreadPlanCallFunction::ShouldReportStop().
|
inlinevirtual |
Reimplemented in lldb_private::StopInfoWatchpoint::ThreadPlanStepOverWatchpoint.
Definition at line 389 of file ThreadPlan.h.
Referenced by lldb_private::Thread::ShouldStop().
|
pure virtual |
Implemented in lldb_private::ScriptedThreadPlan, lldb_private::ThreadPlanNull, lldb_private::ThreadPlanBase, lldb_private::ThreadPlanCallFunction, lldb_private::ThreadPlanCallOnFunctionExit, lldb_private::ThreadPlanRunToAddress, lldb_private::ThreadPlanSingleThreadTimeout, lldb_private::ThreadPlanStepInRange, lldb_private::ThreadPlanStepInstruction, lldb_private::ThreadPlanStepOut, lldb_private::ThreadPlanStepOverBreakpoint, lldb_private::ThreadPlanStepOverRange, lldb_private::ThreadPlanStepThrough, lldb_private::ThreadPlanStepUntil, lldb_private::AppleThreadPlanStepThroughObjCTrampoline, lldb_private::AppleThreadPlanStepThroughDirectDispatch, lldb_private::StopInfoWatchpoint::ThreadPlanStepOverWatchpoint, and lldb_private::ThreadPlanStepRange.
Referenced by lldb_private::Thread::ShouldStop().
|
virtual |
Reimplemented in lldb_private::ScriptedThreadPlan, lldb_private::ThreadPlanBase, lldb_private::ThreadPlanCallFunction, lldb_private::ThreadPlanRunToAddress, lldb_private::ThreadPlanSingleThreadTimeout, lldb_private::ThreadPlanStepInstruction, lldb_private::ThreadPlanStepOut, lldb_private::ThreadPlanStepOverBreakpoint, lldb_private::ThreadPlanStepRange, lldb_private::ThreadPlanStepThrough, lldb_private::ThreadPlanStepUntil, lldb_private::AppleThreadPlanStepThroughObjCTrampoline, and lldb_private::AppleThreadPlanStepThroughDirectDispatch.
Definition at line 105 of file ThreadPlan.cpp.
References GetPreviousPlan(), and StopOthers().
Referenced by lldb_private::ThreadPlanSingleThreadTimeout::PushNewWithTimeout(), lldb_private::ThreadPlanSingleThreadTimeout::ResumeFromPrevState(), StopOthers(), lldb_private::ThreadPlanSingleThreadTimeout::StopOthers(), and WillResume().
|
inlinevirtual |
Reimplemented in lldb_private::ThreadPlanCallFunction, and lldb_private::ThreadPlanStepOverBreakpoint.
Definition at line 418 of file ThreadPlan.h.
|
inline |
Definition at line 357 of file ThreadPlan.h.
References m_tracer_sp.
Referenced by lldb_private::ThreadPlanBase::DoPlanExplainsStop(), and lldb_private::Thread::ShouldStop().
|
pure virtual |
Returns whether this plan could be successfully created.
[in] | error | A stream to which to print some reason why the plan could not be created. Can be NULL. |
Implemented in lldb_private::ScriptedThreadPlan, lldb_private::ThreadPlanNull, lldb_private::ThreadPlanBase, lldb_private::ThreadPlanCallFunction, lldb_private::ThreadPlanCallOnFunctionExit, lldb_private::ThreadPlanRunToAddress, lldb_private::ThreadPlanSingleThreadTimeout, lldb_private::ThreadPlanStepInstruction, lldb_private::ThreadPlanStepOut, lldb_private::ThreadPlanStepOverBreakpoint, lldb_private::ThreadPlanStepRange, lldb_private::ThreadPlanStepThrough, lldb_private::ThreadPlanStepUntil, and lldb_private::AppleThreadPlanStepThroughObjCTrampoline.
bool ThreadPlan::WillResume | ( | lldb::StateType | resume_state, |
bool | current_plan | ||
) |
Definition at line 116 of file ThreadPlan.cpp.
References ClearThreadCache(), DoWillResume(), lldb_private::eLazyBoolCalculate, fp, lldb_private::RegisterContext::GetFP(), lldb_private::GetLog(), lldb_private::RegisterContext::GetPC(), lldb_private::Thread::GetRegisterContext(), lldb_private::RegisterContext::GetSP(), GetThread(), LLDB_LOGF, m_cached_plan_explains_stop, m_name, m_tid, pc, sp, lldb_private::StateAsCString(), lldb_private::Step, and StopOthers().
Referenced by lldb_private::Thread::ShouldResume().
|
pure virtual |
Implemented in lldb_private::ScriptedThreadPlan, lldb_private::ThreadPlanNull, lldb_private::ThreadPlanBase, lldb_private::ThreadPlanCallFunction, lldb_private::ThreadPlanCallOnFunctionExit, lldb_private::ThreadPlanRunToAddress, lldb_private::ThreadPlanSingleThreadTimeout, lldb_private::ThreadPlanStepInstruction, lldb_private::ThreadPlanStepOut, lldb_private::ThreadPlanStepOverBreakpoint, lldb_private::ThreadPlanStepRange, lldb_private::ThreadPlanStepThrough, lldb_private::ThreadPlanStepUntil, and lldb_private::AppleThreadPlanStepThroughObjCTrampoline.
Referenced by lldb_private::Thread::ShouldStop(), and lldb_private::Thread::WillStop().
|
private |
Definition at line 558 of file ThreadPlan.h.
Referenced by CachePlanExplainsStop(), PlanExplainsStop(), and WillResume().
|
protected |
Definition at line 541 of file ThreadPlan.h.
Referenced by lldb_private::ThreadPlanStepUntil::Clear(), lldb_private::ThreadPlanStepThrough::ClearBackstopBreakpoint(), lldb_private::ThreadPlanStepRange::ClearNextBranchBreakpoint(), lldb_private::ThreadPlanRunToAddress::SetInitialBreakpoints(), lldb_private::ThreadPlanStepRange::SetNextBranchBreakpoint(), lldb_private::ThreadPlanStepOut::ThreadPlanStepOut(), lldb_private::ThreadPlanStepThrough::ThreadPlanStepThrough(), lldb_private::ThreadPlanStepUntil::ThreadPlanStepUntil(), lldb_private::ThreadPlanRunToAddress::ValidatePlan(), lldb_private::ThreadPlanStepOut::ValidatePlan(), lldb_private::ThreadPlanStepRange::ValidatePlan(), lldb_private::ThreadPlanStepThrough::ValidatePlan(), lldb_private::ThreadPlanStepUntil::ValidatePlan(), and lldb_private::ThreadPlanRunToAddress::~ThreadPlanRunToAddress().
|
private |
Definition at line 562 of file ThreadPlan.h.
Referenced by IsControllingPlan(), and SetIsControllingPlan().
|
protected |
Definition at line 542 of file ThreadPlan.h.
Referenced by SetIterationCount(), and lldb_private::ThreadPlanStepInstruction::ShouldStop().
|
private |
Definition at line 555 of file ThreadPlan.h.
Referenced by GetKind().
|
private |
Definition at line 556 of file ThreadPlan.h.
Referenced by GetName(), and WillResume().
|
private |
Definition at line 561 of file ThreadPlan.h.
Referenced by OkayToDiscard(), and SetOkayToDiscard().
|
private |
Definition at line 559 of file ThreadPlan.h.
Referenced by IsPlanComplete(), MischiefManaged(), and SetPlanComplete().
|
private |
Definition at line 557 of file ThreadPlan.h.
Referenced by IsPlanComplete(), MischiefManaged(), and SetPlanComplete().
|
private |
Definition at line 560 of file ThreadPlan.h.
Referenced by GetPrivate(), and SetPrivate().
|
private |
Definition at line 563 of file ThreadPlan.h.
Referenced by PlanSucceeded(), and SetPlanComplete().
|
protected |
Definition at line 536 of file ThreadPlan.h.
Referenced by lldb_private::ThreadPlanStepUntil::AnalyzeStop(), lldb_private::ThreadPlanStepOut::CalculateReturnValue(), lldb_private::ThreadPlanStepThrough::ClearBackstopBreakpoint(), lldb_private::AppleThreadPlanStepThroughObjCTrampoline::DidPush(), lldb_private::ThreadPlanCallFunction::DoPlanExplainsStop(), lldb_private::ThreadPlanStepOut::DoPlanExplainsStop(), lldb_private::ThreadPlanStepOverBreakpoint::DoWillResume(), lldb_private::ThreadPlanStepOverRange::DoWillResume(), lldb_private::ThreadPlanStepOut::GetDescription(), lldb_private::ThreadPlanCallUserExpression::GetRealStopInfo(), lldb_private::ScriptedThreadPlan::GetScriptInterpreter(), GetTarget(), GetThread(), lldb_private::ThreadPlanSingleThreadTimeout::HandleTimeout(), lldb_private::ThreadPlanStepThrough::HitOurBackstopBreakpoint(), lldb_private::ThreadPlanStepRange::IsNextBranchBreakpointStop(), lldb_private::ThreadPlanStepThrough::LookForPlanToStepThroughFromCurrentPC(), lldb_private::ThreadPlanStepRange::NextRangeBreakpointExplainsStop(), lldb_private::ThreadPlanStepOverBreakpoint::ReenableBreakpointSite(), lldb_private::ThreadPlanCallFunction::SetBreakpoints(), lldb_private::ThreadPlanStepRange::SetNextBranchBreakpoint(), lldb_private::ThreadPlanCallFunction::SetReturnValue(), lldb_private::ThreadPlanCallFunctionUsingABI::SetReturnValue(), lldb_private::ThreadPlanStepOut::ThreadPlanStepOut(), and lldb_private::ThreadPlanStepThrough::ThreadPlanStepThrough().
|
protected |
Definition at line 539 of file ThreadPlan.h.
Referenced by lldb_private::ThreadPlanBase::DoWillResume(), ShouldReportRun(), and lldb_private::ThreadPlanBase::ShouldStop().
|
protected |
Definition at line 538 of file ThreadPlan.h.
Referenced by lldb_private::ThreadPlanBase::DoWillResume(), ShouldReportStop(), and lldb_private::ThreadPlanBase::ShouldStop().
|
protected |
Definition at line 535 of file ThreadPlan.h.
Referenced by lldb_private::ThreadPlanStepOut::DoPlanExplainsStop(), lldb_private::ThreadPlanStepInRange::GetDescription(), lldb_private::ThreadPlanStepInstruction::GetDescription(), lldb_private::ThreadPlanStepOverRange::GetDescription(), lldb_private::ThreadPlanNull::GetStatus(), lldb_private::ThreadPlanStepInRange::ShouldStop(), lldb_private::ThreadPlanStepInstruction::ShouldStop(), lldb_private::ThreadPlanStepOut::ShouldStop(), and lldb_private::ThreadPlanStepOverRange::ShouldStop().
|
protected |
Definition at line 540 of file ThreadPlan.h.
Referenced by SetIterationCount(), and lldb_private::ThreadPlanStepInstruction::ThreadPlanStepInstruction().
|
private |
Definition at line 552 of file ThreadPlan.h.
Referenced by ClearThreadCache(), GetThread(), and lldb_private::ThreadPlanBase::ThreadPlanBase().
|
protected |
Definition at line 537 of file ThreadPlan.h.
Referenced by lldb_private::ThreadPlanNull::DoPlanExplainsStop(), lldb_private::ThreadPlanCallFunction::DoTakedown(), lldb_private::ThreadPlanNull::GetPlanRunState(), GetThread(), lldb_private::ThreadPlanNull::MischiefManaged(), lldb_private::ThreadPlanRunToAddress::SetInitialBreakpoints(), lldb_private::ThreadPlanStepRange::SetNextBranchBreakpoint(), lldb_private::ThreadPlanNull::ShouldStop(), lldb_private::ThreadPlanBase::ShouldStop(), lldb_private::ThreadPlanStepOut::ThreadPlanStepOut(), lldb_private::ThreadPlanStepThrough::ThreadPlanStepThrough(), lldb_private::ThreadPlanStepUntil::ThreadPlanStepUntil(), lldb_private::ThreadPlanNull::ValidatePlan(), WillResume(), and lldb_private::ThreadPlanNull::WillStop().
|
private |
Definition at line 565 of file ThreadPlan.h.
Referenced by DoTraceLog(), GetThreadPlanTracer(), RunState(), SetThreadPlanTracer(), and TracerExplainsStop().