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(); }
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()); } } }
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); } }
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(); }