public override void Evaluate(Response response, dynamic arguments) { // expression, frameId, context int frameId = getInt(arguments, "frameId"); var frame = _framesHandles.Get(frameId, null); if (frame == null) { SendErrorResponse(response, 10001, "No active stackframe"); return; } var expression = (string)arguments.expression; var context = (string)arguments.context; int id = -1; OneScript.DebugProtocol.Variable evalResult; try { evalResult = _process.Evaluate(frame, expression); if (evalResult.IsStructured) { var loc = new EvaluatedVariableLocator(expression, frame.ThreadId, frameId); id = _variableHandles.Create(loc); } } catch (Exception e) { evalResult = new OneScript.DebugProtocol.Variable() { Presentation = e.Message, Name = "$evalFault" }; } if (evalResult.Name.Equals("$evalFault") && context.Equals("hover")) { evalResult.Presentation = $"err: {expression}"; } var protResult = new EvaluateResponseBody(evalResult.Presentation, id) { type = evalResult.TypeName }; SendResponse(response, protResult); }
private Variable[] GetDebugVariables(IList <IVariable> machineVariables) { var result = new Variable[machineVariables.Count]; for (int i = 0; i < machineVariables.Count; i++) { string presentation; string typeName; var currentVar = machineVariables[i]; //На случай проблем, подобных: //https://github.com/EvilBeaver/OneScript/issues/918 try { presentation = currentVar.AsString(); } catch (Exception e) { presentation = e.Message; } try { typeName = currentVar.SystemType.Name; } catch (Exception e) { typeName = e.Message; } result[i] = new Variable() { Name = currentVar.Name, IsStructured = IsStructured(currentVar), Presentation = presentation, TypeName = typeName }; } return(result); }
public override void Evaluate(Response response, dynamic arguments) { // expression, frameId, context int frameId = getInt(arguments, "frameId"); var frame = _framesHandles.Get(frameId, null); if (frame == null) { SendErrorResponse(response, 10001, "No active stackframe"); return; } var expression = (string)arguments.expression; var context = (string)arguments.context; if (context != "watch") { SendResponse(response); return; } OneScript.DebugProtocol.Variable evalResult; try { evalResult = _process.Evaluate(frame, expression); } catch (Exception e) { evalResult = new OneScript.DebugProtocol.Variable() { Presentation = e.Message }; } var protResult = new EvaluateResponseBody(evalResult.Presentation) { type = evalResult.TypeName }; SendResponse(response, protResult); }