Fix the error message when an expression evaluation is interrupted by a crash/breakpoint hit to
give the reason for the interrupt. Also make sure it we don't want to unwind from the evaluation
we print something if it is interrupted.
llvm-svn: 131448
diff --git a/lldb/source/Expression/ClangUserExpression.cpp b/lldb/source/Expression/ClangUserExpression.cpp
index 6eafd7b..563c28a 100644
--- a/lldb/source/Expression/ClangUserExpression.cpp
+++ b/lldb/source/Expression/ClangUserExpression.cpp
@@ -504,7 +504,7 @@
lldb::addr_t function_stack_pointer = static_cast<ThreadPlanCallFunction *>(call_plan_sp.get())->GetFunctionStackPointer();
- call_plan_sp->SetPrivate(true);
+ // call_plan_sp->SetPrivate(true);
uint32_t single_thread_timeout_usec = 500000;
@@ -524,10 +524,23 @@
if (execution_result == eExecutionInterrupted)
{
- if (discard_on_error)
- error_stream.Printf ("Expression execution was interrupted. The process has been returned to the state before execution.");
+ const char *error_desc = NULL;
+
+ if (call_plan_sp)
+ {
+ lldb::StopInfoSP real_stop_info_sp = call_plan_sp->GetRealStopInfo();
+ if (real_stop_info_sp)
+ error_desc = real_stop_info_sp->GetDescription();
+ }
+ if (error_desc)
+ error_stream.Printf ("Execution was interrupted, reason: %s.", error_desc);
else
- error_stream.Printf ("Expression execution was interrupted. The process has been left at the point where it was interrupted.");
+ error_stream.Printf ("Execution was interrupted.", error_desc);
+
+ if (discard_on_error)
+ error_stream.Printf ("\nThe process has been returned to the state before execution.");
+ else
+ error_stream.Printf ("\nThe process has been left at the point where it was interrupted.");
return execution_result;
}