Browse Source

fix Debugger: Moving mouse over a static void method taking no arguments causes a DebuggerException. It seems the debugger is trying to run the method?

pull/45/merge
Siegfried Pammer 12 years ago
parent
commit
f45a80f29b
  1. 4
      src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs
  2. 8
      src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs

4
src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs

@ -119,6 +119,8 @@ namespace Debugger.AddIn @@ -119,6 +119,8 @@ namespace Debugger.AddIn
throw new GetValueException("An object reference is required for the non-static field, method, or property '" + importedMember.FullName + "'");
target = Convert(result.TargetResult);
}
if (!allowMethodInvoke && (importedMember is IMethod))
throw new InvalidOperationException("Method invocation not allowed in the current context!");
Value val = Value.GetMemberValue(evalThread, target, importedMember);
if (val == null)
throw new GetValueException("Member not found!");
@ -482,7 +484,7 @@ namespace Debugger.AddIn @@ -482,7 +484,7 @@ namespace Debugger.AddIn
string Visit(TypeResolveResult result)
{
throw new NotImplementedException();
return new CSharpAmbience().ConvertType(result.Type);
}
string Visit(UnknownMemberResolveResult result)

8
src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs

@ -625,11 +625,12 @@ namespace ICSharpCode.SharpDevelop.Services @@ -625,11 +625,12 @@ namespace ICSharpCode.SharpDevelop.Services
var resolveResult = e.ResolveResult;
if (resolveResult == null)
return;
if (resolveResult is LocalResolveResult || resolveResult is MemberResolveResult || resolveResult is InvocationResolveResult) {
if (resolveResult is LocalResolveResult || resolveResult is MemberResolveResult) {
string text = string.Empty;
try {
text = new ResolveResultPrettyPrinter().Print(resolveResult);
} catch (NotImplementedException) {
} catch (NotImplementedException ex) {
SD.Log.Warn(ex);
}
Func<Value> getValue = delegate {
ExpressionEvaluationVisitor eval = new ExpressionEvaluationVisitor(CurrentStackFrame, EvalThread, CurrentStackFrame.AppDomain.Compilation);
@ -638,7 +639,8 @@ namespace ICSharpCode.SharpDevelop.Services @@ -638,7 +639,8 @@ namespace ICSharpCode.SharpDevelop.Services
try {
var rootNode = new ValueNode(ClassBrowserIconService.LocalVariable, text, getValue);
e.SetToolTip(new DebuggerTooltipControl(rootNode));
} catch (InvalidOperationException) {
} catch (InvalidOperationException ex) {
SD.Log.Warn(ex);
}
}
}

Loading…
Cancel
Save