Send a stop event when an expression stops at a breakpoint

in an expression and doesn't ignore the stop.

Patch by Jim Ingham.

<rdar://problem/14583884>

llvm-svn: 187434
This commit is contained in:
Sean Callanan 2013-07-30 19:54:09 +00:00
parent fee76fac2f
commit 4b388c9e16
2 changed files with 7 additions and 30 deletions

View File

@ -345,36 +345,7 @@ CommandObjectExpression::EvaluateExpression
exe_ctx.GetFramePtr(),
result_valobj_sp,
options);
if ((exe_results == eExecutionInterrupted && !m_command_options.unwind_on_error)
||(exe_results == eExecutionHitBreakpoint && !m_command_options.ignore_breakpoints))
{
uint32_t start_frame = 0;
uint32_t num_frames = 1;
uint32_t num_frames_with_source = 0;
Thread *thread = exe_ctx.GetThreadPtr();
if (thread)
{
thread->GetStatus (result->GetOutputStream(),
start_frame,
num_frames,
num_frames_with_source);
}
else
{
Process *process = exe_ctx.GetProcessPtr();
if (process)
{
bool only_threads_with_stop_reason = true;
process->GetThreadStatus (result->GetOutputStream(),
only_threads_with_stop_reason,
start_frame,
num_frames,
num_frames_with_source);
}
}
}
if (result_valobj_sp)
{
Format format = m_format_options.GetFormat();

View File

@ -5030,11 +5030,17 @@ Process::RunThreadPlan (ExecutionContext &exe_ctx,
if (log)
log->Printf ("Process::RunThreadPlan() stopped for breakpoint: %s.", stop_info_sp->GetDescription());
return_value = eExecutionHitBreakpoint;
if (!ignore_breakpoints)
{
event_to_broadcast_sp = event_sp;
}
}
else
{
if (log)
log->PutCString ("Process::RunThreadPlan(): thread plan didn't successfully complete.");
if (!unwind_on_error)
event_to_broadcast_sp = event_sp;
return_value = eExecutionInterrupted;
}
}