Пример #1
0
            public UiTraceNode(UiTraceNode parent, tracer_wrapper.TracedInstruction inst)
            {
                ParentNode        = parent;
                TracedInstruction = inst;
                Header            = $"{TracerApi.DecodeAndFormatInstruction(inst.BranchSource)}";

                ToolTip =
                    $@"BranchSource: 0x{inst.BranchSource.ToUInt64():X8}
BranchTarget: 0x{inst.BranchTarget.ToUInt64():X8}

EAX: 0x{inst.RegisterSet.Eax.ToUInt64():X8}
EBX: 0x{inst.RegisterSet.Ebx.ToUInt64():X8}
ECX: 0x{inst.RegisterSet.Ecx.ToUInt64():X8}
EDX: 0x{inst.RegisterSet.Edx.ToUInt64():X8}
ESI: 0x{inst.RegisterSet.Esi.ToUInt64():X8}
EDI: 0x{inst.RegisterSet.Edi.ToUInt64():X8}
EBP: 0x{inst.RegisterSet.Ebp.ToUInt64():X8}
ESP: 0x{inst.RegisterSet.Esp.ToUInt64():X8}

SegGS: 0x{inst.RegisterSet.SegGs.ToUInt64()}
SegFS: 0x{inst.RegisterSet.SegFs.ToUInt64()}
SegES: 0x{inst.RegisterSet.SegEs.ToUInt64()}
SegDS: 0x{inst.RegisterSet.SegDs.ToUInt64()}
SegCS: 0x{inst.RegisterSet.SegCs.ToUInt64()}
SegSS: 0x{inst.RegisterSet.SegSs.ToUInt64()}";
            }
Пример #2
0
        private void AddNode(TracedInstruction traceResult, UiTraceNode parent)
        {
            var newNode = new UiTraceNode(parent, traceResult);

            if (parent != null)
            {
                parent.Items.Add(newNode);
            }
            else
            {
                TraceOutputTreeView.Items.Add(newNode);
            }

            if (traceResult.CallDepth == 0 && traceResult.Type == TracedInstructionType.Return)
            {
                TraceOutputTreeView.Items.Add(new Separator());
            }

            lastTraceNode = newNode;

            var scrollViewer = (ScrollViewer)this.FindVisualChildElement(TraceOutputTreeView, typeof(ScrollViewer));

            scrollViewer.ScrollToBottom();
        }