private void Context_DebuggerCallback(Context sender, DebuggerCallbackEventArgs e) { Console.Clear(); for (var i = 0; i < _code.Length; i++) { if (i >= e.Statement.Position && i <= e.Statement.EndPosition) { Console.BackgroundColor = ConsoleColor.Yellow; } else { Console.BackgroundColor = ConsoleColor.Black; } Console.Write(_code[i]); } Console.WriteLine(); Console.WriteLine("Variables:"); Console.WriteLine(string.Join(Environment.NewLine, new ContextDebuggerProxy(sender).Variables.Select(x => x.Key + ": " + x.Value))); Console.WriteLine(); Console.WriteLine("Output:"); while (Console.ReadKey().Key != ConsoleKey.Spacebar) { ; } }
private void Debugger(Context sender, DebuggerCallbackEventArgs e) { //Debug.Log(e.Statement); if (recentCode.Count > debuggerLength) { recentCode.Dequeue(); } CodeInfo info = new CodeInfo(); info.code = e.Statement.ToString(); info.startPosition = e.Statement.Position; info.endPosition = e.Statement.EndPosition; recentCode.Enqueue(info); }
private void Context_DebuggerCallback(Context sender, DebuggerCallbackEventArgs e) { Console.Clear(); for (var i = 0; i < _code.Length; i++) { if (i >= e.Statement.Position && i <= e.Statement.EndPosition) { Console.BackgroundColor = ConsoleColor.Yellow; } else { Console.BackgroundColor = ConsoleColor.Black; } Console.Write(_code[i]); } Console.WriteLine(); var debugger = new ContextDebuggerProxy(sender); if (debugger.CurrFunction.Name != "") { Console.WriteLine("Current Function:" + debugger.CurrFunction.Name); var ps = debugger.CurrFunction.ParamNames; var args = debugger.CurrFunction.RunArguments; Console.WriteLine("Current Function ParamNames:"); var index = 0; foreach (var item in args) { var name = ""; if (ps.Count > index) { name = ps[index]; } Console.WriteLine($"[{index}] {name}: {item.Value.Value} ({item.Value.ValueType})"); index++; } while (index < ps.Count) { var name = ps[index]; Console.WriteLine($"[{index}] {name}: (Undefined) "); index++; } Console.WriteLine("Variables:"); var variables = debugger.LocalVariables; foreach (var item in variables) { Console.WriteLine($"{item.Name}: {item.Value} ({item.ValueType})"); } } else { Console.WriteLine("Variables:"); var variables = debugger.Variables; foreach (var item in variables) { Console.WriteLine($"{item.Key}: {item.Value.Value} ({item.Value.ValueType})"); } } Console.WriteLine(); Console.WriteLine("Output:"); while (Console.ReadKey().Key != ConsoleKey.Spacebar) { ; } }