예제 #1
0
        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();
        }
예제 #2
0
 private void applyTraceFields(DebugTraceEntry trace)
 {
     foreach (DebugTraceEntryField field in trace.fields)
     {
         TraceActiveThread.ApplyTraceData(field.type, field.data);
     }
     TraceActiveThread.cia = trace.cia;
 }