diff --git a/Debugger/Debugger.Core/MetaData/DebugMethodInfo.cs b/Debugger/Debugger.Core/MetaData/DebugMethodInfo.cs index 778427006..0a72f01f6 100644 --- a/Debugger/Debugger.Core/MetaData/DebugMethodInfo.cs +++ b/Debugger/Debugger.Core/MetaData/DebugMethodInfo.cs @@ -471,7 +471,8 @@ namespace Debugger.MetaData corVal = context.CorILFrame.GetLocalVariable((uint)varIndex); } catch (COMException e) { if ((uint)e.ErrorCode == 0x80131304) throw new GetValueException("Unavailable in optimized code"); - throw; + // show the message in case of bad index + throw new GetValueException(e.Message); } return new Value(context.AppDomain, corVal); } diff --git a/Debugger/ILSpy.Debugger/Models/TreeModel/ExpressionNode.cs b/Debugger/ILSpy.Debugger/Models/TreeModel/ExpressionNode.cs index a220e6e07..1889fedf0 100644 --- a/Debugger/ILSpy.Debugger/Models/TreeModel/ExpressionNode.cs +++ b/Debugger/ILSpy.Debugger/Models/TreeModel/ExpressionNode.cs @@ -163,12 +163,12 @@ namespace ILSpy.Debugger.Models.TreeModel IEnumerable list; if (ILAstBuilder.MemberLocalVariables.TryGetValue(token, out list)) { var variable = list.FirstOrDefault(v => v.Name == targetName); - if (variable != null) { + if (variable != null && variable.OriginalVariable != null) { if (expression is MemberReferenceExpression) { var memberExpression = (MemberReferenceExpression)expression; - memberExpression.Target.AddAnnotation(new int[] { variable.OriginalVariable.Index }); + memberExpression.Target.AddAnnotation(new [] { variable.OriginalVariable.Index }); } else { - expression.AddAnnotation(new int[] { variable.OriginalVariable.Index }); + expression.AddAnnotation(new [] { variable.OriginalVariable.Index }); } } }