Пример #1
0
        public void GoToStackTraceInExecPath(StackTraceEntry trace)
        {
            /* switch tabs */
            mainTabStrip.SelectedTab = executionPathTab;

            foreach (TreeNode node in executionTree.Nodes)
            {
                node.Collapse();
            }

            var nodeParent = ExecCallToTree[trace.Parent];
            while (nodeParent != null)
            {
                nodeParent.Expand();
                nodeParent = nodeParent.Parent;
            }
            if (_currentModal != null)
            {
                _currentModal.Hide();
            }
            executionTree.SelectedNode = ExecCallToTree[trace.Parent];
            executionTree.Focus();
        }
Пример #2
0
        private void DeserializeStackTraces()
        {
            /* StackTraceEntry Layout 
             * InternalID - Uint
             * Message - string
             * Offender - string
             * StackTrace - list of strings (in order)
             * Parent is Present - bool
             * Parent Call - InternalID
            */

            /* get count of items */
            var totalCount = ReadUint();

            for (var x = 0; x < totalCount; x++)
            {
                /* read each item */
                StackTraceEntry item = new StackTraceEntry();
                Data.StackTraces.Add(item);

                item.InternalID = ReadUint();
                item.Message = ReadString();
                item.Offender = ReadString();

                var traceLineCount = ReadUint();
                for (var y = 0; y < traceLineCount; y++)
                {
                    item.StackTrace.Add(ReadString());
                }

                var parentPresent = ReadBool();
                if (parentPresent)
                {
                    StacksToResolve.Add(item, ReadUint());
                }
            }
        }
Пример #3
0
        private void ProcessNewException(string line, long lineNumber)
        {
            Regex exceptionStart = new Regex("Caught Exception:\\s+(.*?)\\s+\\(0,0\\)\\s+(.*)");

            var match = exceptionStart.Match(line);
            if (match.Success)
            {
                _processingException = true;
                currentStackTrace = new StackTraceEntry();

                currentStackTrace.LineNumber = lineNumber;
                currentStackTrace.Message = match.Groups[1].Value;
                currentStackTrace.Offender = match.Groups[2].Value;

                StackTraces.Add(currentStackTrace);
            }

        }
Пример #4
0
        public void GoToStackTraceInExecPath(StackTraceEntry trace)
        {
            /* switch tabs */
            mainTabStrip.SelectedTab = executionPathTab;

            foreach (TreeNode node in executionTree.Nodes)
            {
                node.Collapse();
            }
            if (trace.Parent == null)
            {
                /* try to find the closest one */
                var bestGuess = traceData.AllExecutionCalls.Where(c => c.StartLine <= trace.LineNumber && c.StopLine >= trace.LineNumber).Last();
                trace.Parent = bestGuess;
            }
            if (ExecCallToTree.ContainsKey(trace.Parent))
            {
                var nodeParent = ExecCallToTree[trace.Parent];
                while (nodeParent != null)
                {
                    nodeParent.Expand();
                    nodeParent = nodeParent.Parent;
                }
            }
            else
            {
                // the node doesn't exist on the tree yet, we need to build it out
                var parent = trace.Parent;

                BuildOutTreeForCall(parent);

                /* parent should exist on the tree, start building down */
            }

            if (_currentModal != null)
            {
                _currentModal.Hide();
            }
            executionTree.SelectedNode = ExecCallToTree[trace.Parent];
            executionTree.Focus();

        }