private void stepTraceData(int traceIdx) { if (traceIdx == TraceEntryIdx) { // Already here, do nothing return; } else if (traceIdx > TraceEntryIdx) { // Stepping Backwards, we copy the TraceThread for RegView update tracking TraceActiveThread = TraceActiveThread.Clone(); for (var i = TraceEntryIdx + 1; i <= traceIdx; ++i) { applyTraceFields(TraceEntries[i]); } TraceEntryIdx = traceIdx; } else if (traceIdx < TraceEntryIdx) { // Stepping 'forward', need to rescan TraceActiveThread = ActiveThread.Clone(); for (var i = 0; i <= traceIdx; ++i) { applyTraceFields(TraceEntries[i]); } TraceEntryIdx = traceIdx; } UpdatePauseInfo(); }
private void NetHandler_GetTraceEvent(object sender, GetTraceEventArgs e) { this.BeginInvoke((MethodInvoker) delegate { stepBackToolStripMenuItem.Enabled = true; stepForwardToolStripMenuItem.Enabled = true; TraceEntries = e.Info; TraceEntryIdx = 0; Tracing = true; TraceActiveThread = ActiveThread.Clone(); applyTraceFields(TraceEntries[TraceEntryIdx]); }); }