diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/NDebugger.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/NDebugger.cs index 2846127f23..f7cb6164ea 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/NDebugger.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/NDebugger.cs @@ -135,6 +135,7 @@ namespace Debugger pauseSession = null; pendingEvalsCollection.Clear(); + evaluating = false; TraceMessage("Reset done"); diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Thread.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Thread.cs index 6bbc42b713..fab5a8b94d 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Thread.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Thread.cs @@ -330,5 +330,12 @@ namespace Debugger return null; } } + + public bool IsLastFunctionNative { + get { + process.AssertPaused(); + return corThread.ActiveChain.IsManaged == 0; + } + } } } diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Evals/Eval.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Evals/Eval.cs index 96792ccb93..a103df7a5d 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Evals/Eval.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Evals/Eval.cs @@ -116,6 +116,15 @@ namespace Debugger { debugger.AssertPaused(); + if (targetThread.IsLastFunctionNative) { + error = "Can not evaluate because native frame is on top of stack"; + evalState = EvalState.Error; + if (EvalComplete != null) { + EvalComplete(this, new EvalEventArgs(this)); + } + return false; + } + ICorDebugValue[] args = getArgs(); if (args == null) {