private void AddNode(ILDebugger debugger) { var debugNode = MemberNode.GetNodeOfMember(debugger.Method, true); tvNodes.Nodes.Insert(0, debugNode); foreach (var itm in debugger.Stack) { try { if (itm.Value == null) { debugNode.Nodes.Add("null (" + (itm.Type == null ? "" : itm.Type.ToSignatureString()) + ")"); } else { debugNode.Nodes.Add(itm.Value + " (" + (itm.Type == null ? "" : itm.Type.ToSignatureString()) + ")"); } } catch (Exception) { debugNode.Nodes.Add("" + " (" + (itm.Type == null ? "" : itm.Type.ToSignatureString()) + ")"); } } }
public void Fill() { tvNodes.BeginUpdate(); tvNodes.Nodes.Clear(); ILDebugger debugger = ILDebugManager.Instance.Debugger; while (debugger != null) { AddNode(debugger); debugger = debugger.MethodDebugger; } tvNodes.EndUpdate(); tvNodes.ExpandAll(); tvNodes.Refresh(); }
public void Fill() { tvNodes.BeginUpdate(); tvNodes.Nodes.Clear(); ILDebugger debugger = ILDebugManager.Instance.Debugger; while (debugger != null && debugger.MethodDebugger != null) { debugger = debugger.MethodDebugger; // find top of the stack } if (debugger != null) { var debugNode = MemberNode.GetNodeOfMember(debugger.Method, true); TreeNode localsNode = new TreeNode("Locals"); for (int i = 0; i < debugger.Locals.Length; i++) { var itm = debugger.Locals[i].Value; string prefix = "[" + debugger.Locals[i].Info.LocalIndex + "] "; string typeSuffix = " (" + (debugger.Locals[i].Info.LocalType == null ? "" : debugger.Locals[i].Info.LocalType.ToSignatureString()) + ")"; try { if (itm == null) { localsNode.Nodes.Add(prefix + "null" + typeSuffix); } else { localsNode.Nodes.Add(prefix + itm + typeSuffix); } } catch (Exception) { localsNode.Nodes.Add(prefix + "" + typeSuffix); } } debugNode.Nodes.Add(localsNode); TreeNode argumentsNode = new TreeNode("Arguments"); for (int i = 0; i < debugger.Parameters.Length; i++) { var itm = debugger.Parameters[i]; string typeSuffix = " (" + (itm.Info.ParameterType == null ? "" : itm.Info.ParameterType.ToSignatureString()) + ")"; try { if (itm.Value == null) { argumentsNode.Nodes.Add(itm.Info.Name + "= " + "null" + typeSuffix); } else { argumentsNode.Nodes.Add(itm.Info.Name + "= " + itm.Value + typeSuffix); } } catch (Exception) { argumentsNode.Nodes.Add(typeSuffix); } } debugNode.Nodes.Add(argumentsNode); tvNodes.Nodes.Add(debugNode); } tvNodes.EndUpdate(); tvNodes.ExpandAll(); tvNodes.Refresh(); }