From 3101ba3300856fe3fba5f2f819d42388651a8f61 Mon Sep 17 00:00:00 2001 From: Jim Ingham Date: Thu, 14 Mar 2013 21:44:36 +0000 Subject: [PATCH] =?utf8?q?Add=20some=20logging=20to=20track=20cases=20wher?= =?utf8?q?e=20=E2=80=9Cstep-in=E2=80=9D=20steps=20out=20due=20to=20the=20a?= =?utf8?q?void-regexp=20and=20the=20step-in=20target.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit llvm-svn: 177117 --- lldb/source/Target/ThreadPlanStepInRange.cpp | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/lldb/source/Target/ThreadPlanStepInRange.cpp b/lldb/source/Target/ThreadPlanStepInRange.cpp index d4b917f..c21eb69 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 (current_plan); - should_step_out = step_in_range_plan->FrameMatchesAvoidRegexp (); + ThreadPlanStepInRange *step_in_range_plan = static_cast (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 (); } } -- 2.7.4