Exemplo n.º 1
0
        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(""));
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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(""));
        }