Add "thread return -x" to unwind the innermost user called expression (if you happen to have stopped in it due to a crash.)
Make the message when you hit an crash while evaluating an expression a little clearer, and mention "thread return -x".

rdar://problem/13110464


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@174095 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Commands/CommandObjectFrame.cpp b/source/Commands/CommandObjectFrame.cpp
index 6c3b245..1882731 100644
--- a/source/Commands/CommandObjectFrame.cpp
+++ b/source/Commands/CommandObjectFrame.cpp
@@ -261,33 +261,19 @@
             }
         }
 
-        const bool broadcast = true;
-        bool success = thread->SetSelectedFrameByIndex (frame_idx, broadcast);
+        bool success = thread->SetSelectedFrameByIndexNoisily (frame_idx, result.GetOutputStream());
         if (success)
         {
             m_exe_ctx.SetFrameSP(thread->GetSelectedFrame ());
-            StackFrame *frame = m_exe_ctx.GetFramePtr();
-            if (frame)
-            {
-                bool already_shown = false;
-                SymbolContext frame_sc(frame->GetSymbolContext(eSymbolContextLineEntry));
-                if (m_interpreter.GetDebugger().GetUseExternalEditor() && frame_sc.line_entry.file && frame_sc.line_entry.line != 0)
-                {
-                    already_shown = Host::OpenFileInExternalEditor (frame_sc.line_entry.file, frame_sc.line_entry.line);
-                }
-
-                bool show_frame_info = true;
-                bool show_source = !already_shown;
-                if (frame->GetStatus (result.GetOutputStream(), show_frame_info, show_source))
-                {
-                    result.SetStatus (eReturnStatusSuccessFinishResult);
-                    return result.Succeeded();
-                }
-            }
+            result.SetStatus (eReturnStatusSuccessFinishResult);
         }
-        result.AppendErrorWithFormat ("Frame index (%u) out of range.\n", frame_idx);
-        result.SetStatus (eReturnStatusFailed);
-        return false;
+        else
+        {
+            result.AppendErrorWithFormat ("Frame index (%u) out of range.\n", frame_idx);
+            result.SetStatus (eReturnStatusFailed);
+        }
+        
+        return result.Succeeded();
     }
 protected: