コード例 #1
0
        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()) + ")");
                }
            }
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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();
        }