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