diff options
Diffstat (limited to 'lldb/source/Target/ThreadPlanStepInRange.cpp')
-rw-r--r-- | lldb/source/Target/ThreadPlanStepInRange.cpp | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/lldb/source/Target/ThreadPlanStepInRange.cpp b/lldb/source/Target/ThreadPlanStepInRange.cpp index d4b917fd076..c21eb690cd1 100644 --- a/lldb/source/Target/ThreadPlanStepInRange.cpp +++ b/lldb/source/Target/ThreadPlanStepInRange.cpp @@ -274,7 +274,19 @@ ThreadPlanStepInRange::FrameMatchesAvoidRegexp () { const char *frame_function_name = sc.GetFunctionName().GetCString(); if (frame_function_name) - return avoid_regexp_to_use->Execute(frame_function_name); + { + bool return_value = avoid_regexp_to_use->Execute(frame_function_name); + if (return_value) + { + LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_STEP)); + if (log) + log->Printf ("Stepping out of function %s because it matches the avoid regexp \"%s\".", + frame_function_name, + avoid_regexp_to_use->GetText()); + + } + return return_value; + } } } return false; @@ -285,12 +297,12 @@ ThreadPlanStepInRange::DefaultShouldStopHereCallback (ThreadPlan *current_plan, { bool should_step_out = false; StackFrame *frame = current_plan->GetThread().GetStackFrameAtIndex(0).get(); + LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_STEP)); if (flags.Test(eAvoidNoDebug)) { if (!frame->HasDebugInformation()) { - LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_STEP)); if (log) log->Printf ("Stepping out of frame with no debug info"); @@ -321,13 +333,18 @@ ThreadPlanStepInRange::DefaultShouldStopHereCallback (ThreadPlan *current_plan, else if (strstr (function_name, target_name) == NULL) should_step_out = true; } + if (log && should_step_out) + log->Printf("Stepping out of frame %s which did not match step into target %s.", + sc.GetFunctionName().AsCString(), + step_in_range_plan->m_step_into_target.AsCString()); } } if (!should_step_out) { - ThreadPlanStepInRange *step_in_range_plan = static_cast<ThreadPlanStepInRange *> (current_plan); - should_step_out = step_in_range_plan->FrameMatchesAvoidRegexp (); + ThreadPlanStepInRange *step_in_range_plan = static_cast<ThreadPlanStepInRange *> (current_plan); + // Don't log the should_step_out here, it's easier to do it in FrameMatchesAvoidRegexp. + should_step_out = step_in_range_plan->FrameMatchesAvoidRegexp (); } } |