private void ReloadLocals() { if (this.InvokeRequired) { this.Invoke(new VoidDelegate(ReloadLocals)); return; } LocalsTreeView.Nodes.Clear(); List<Local> AllLocals = TheDebugger.Locals; for(int i = 0; i < AllLocals.Count; i++) { Local cLoc = AllLocals[i]; CommonTools.Node localNode = new CommonTools.Node(); object[] nodeData = new object[3]; nodeData[0] = i; nodeData[1] = cLoc.dbType.Signature; nodeData[2] = Utils.GetValueStr(cLoc.value, cLoc.dbType.Signature == "System.String" ? null : cLoc.dbType.Signature); if(!cLoc.dbType.IsValueType) { cLoc.LoadFields(TheDebugger, delegate() { this.Invoke(new VoidDelegate(delegate() { LoadVariablesNode(cLoc, localNode, nodeData); })); }, true); } localNode.SetData(nodeData); LocalsTreeView.Nodes.Add(localNode); } LocalsTreeView.Nodes.Add(new CommonTools.Node("")); }
private void LoadVariablesNode(Variable theVar, CommonTools.Node parent, object[] parentNodeData) { parentNodeData[2] = theVar.ToString(); parent.SetData(parentNodeData); int i = 0; foreach (Variable aFieldVar in theVar.Fields) { CommonTools.Node newNode = new CommonTools.Node(); object[] nodeData = new object[3]; nodeData[0] = i++; nodeData[1] = aFieldVar.dbType.Signature; nodeData[2] = Utils.GetValueStr(aFieldVar.value, aFieldVar.dbType.Signature); newNode.SetData(nodeData); parent.Nodes.Add(newNode); LoadVariablesNode(aFieldVar, newNode, nodeData); } RefreshTreeViews(); }
private void ReloadArguments() { if (this.InvokeRequired) { this.Invoke(new VoidDelegate(ReloadArguments)); return; } ArgumentsTreeView.Nodes.Clear(); List<Argument> AllArguments = TheDebugger.Arguments; for (int i = 0; i < AllArguments.Count; i++) { Argument cArg = AllArguments[i]; CommonTools.Node argNode = new CommonTools.Node(); object[] nodeData = new object[3]; nodeData[0] = i; nodeData[1] = cArg.dbType.Signature; nodeData[2] = Utils.GetValueStr(cArg.value, cArg.dbType.Signature == "System.String" ? null : cArg.dbType.Signature); if (!cArg.dbType.IsValueType) { cArg.LoadFields(TheDebugger, delegate() { this.Invoke(new VoidDelegate(delegate() { LoadVariablesNode(cArg, argNode, nodeData); })); }, true); } if(cArg.isReturnArg) { nodeData[0] = "Ret"; } argNode.SetData(nodeData); ArgumentsTreeView.Nodes.Add(argNode); } ArgumentsTreeView.Nodes.Add(new CommonTools.Node("")); }