This checkin is the first step in making the lldb thread stepping mechanism more accessible from

the user level.  It adds the ability to invent new stepping modes implemented by python classes,
and to view the current thread plan stack and to some extent alter it.

I haven't gotten to documentation or tests yet.  But this should not cause any behavior changes
if you don't use it, so its safe to check it in now and work on it incrementally.

llvm-svn: 218642
This commit is contained in:
Jim Ingham
2014-09-29 23:17:18 +00:00
parent 8b6fefb3a3
commit 2bdbfd50d2
38 changed files with 1896 additions and 322 deletions

View File

@@ -128,17 +128,31 @@ void
ThreadPlanStepInRange::GetDescription (Stream *s, lldb::DescriptionLevel level)
{
if (level == lldb::eDescriptionLevelBrief)
s->Printf("step in");
else
{
s->Printf ("Stepping through range (stepping into functions): ");
DumpRanges(s);
const char *step_into_target = m_step_into_target.AsCString();
if (step_into_target && step_into_target[0] != '\0')
s->Printf (" targeting %s.", m_step_into_target.AsCString());
else
s->PutChar('.');
s->Printf("step in");
return;
}
s->Printf ("Stepping in");
bool printed_line_info = false;
if (m_addr_context.line_entry.IsValid())
{
s->Printf (" through line ");
m_addr_context.line_entry.DumpStopContext (s, false);
printed_line_info = true;
}
const char *step_into_target = m_step_into_target.AsCString();
if (step_into_target && step_into_target[0] != '\0')
s->Printf (" targeting %s", m_step_into_target.AsCString());
if (!printed_line_info || level == eDescriptionLevelVerbose)
{
s->Printf (" using ranges:");
DumpRanges(s);
}
s->PutChar('.');
}
bool
@@ -303,6 +317,7 @@ ThreadPlanStepInRange::ShouldStop (Event *event_ptr)
else
{
m_no_more_plans = false;
m_sub_plan_sp->SetPrivate(true);
return false;
}
}