private void OnBreakpointPause(object sender, BreakpointPauseEventArgs e) { items.Clear(); FuncBlock fblock = BreakPointManager.GetFBlock(e.Address); void * rbp = SimulateDllModel.GetRBP(); int laddr = (int)rbp + 0x4; int paddr = (int)rbp - 0x8; if (fblock != null) { IList <FuncBlock_Assignment> localvars = fblock.LocalVars; IList <FuncBlock_Assignment> parameters = fblock.Parameters; LocalVarElement_ForFuncBlock lvelement = null; foreach (FuncBlock_Assignment localvar in localvars) { lvelement = new LocalVarElement_ForFuncBlock(localvar); GetValue(lvelement, localvar, laddr); items.Add(lvelement); laddr -= localvar.Sizeof; } foreach (FuncBlock_Assignment parameter in parameters) { lvelement = new LocalVarElement_ForFuncBlock(parameter); GetValue(lvelement, parameter, paddr); items.Add(lvelement); paddr += parameter.Sizeof; } } PropertyChanged(this, new PropertyChangedEventArgs("Items")); }
private void OnBreakpointPause(BreakpointPauseEventArgs e) { BreakpointPause(this, e); bpaddr = e.Address; bpstatus = e.Status; if (bpstatus == BreakpointStatus.SOF) { OnSimulateException(new StackOverflowException("子程序 & 用户函数嵌套调用超过了上限(256)。"), new RoutedEventArgs()); } }
private void OnBreakpointPause(object sender, BreakpointPauseEventArgs e) { Dispatcher.Invoke(new Utility.Delegates.Execute(() => { BaseViewModel bvmodel = BreakPointManager.GetBVModel(e.Address); if (bvmodel != null) { Breakpoint = bvmodel; ifacade.NavigateToNetwork(bvmodel); IEnumerable <SimuBrpoElement> fit = items.Where( (_ele) => { return(_ele.BVModel == bvmodel); }); if (fit.Count() > 0) { SimuBrpoElement ele = fit.First(); int id = items.IndexOf(ele); DG_Main.SelectedIndex = id; } } })); }
private void OnBreakpointPause(object sender, BreakpointPauseEventArgs e) { BackTraceElement btele = null; int size = SimulateDllModel.GetBackTrace(data); items.Clear(); for (int i = size / 2 - 1; i >= 0; i--) { btele = GetElement(data[i * 2]); if (btele != null) { items.Add(btele); } } int bpaddr = SimulateDllModel.GetBPAddr(); btele = GetElement(bpaddr); if (btele != null) { items.Add(btele); } PropertyChanged(this, new PropertyChangedEventArgs("Items")); }
private void OnBreakpointResume(BreakpointPauseEventArgs e) { BreakpointResume(this, e); bpstatus = BreakpointStatus.NORMAL; }
private void OnBreakpointResume(object sender, BreakpointPauseEventArgs e) { items.Clear(); PropertyChanged(this, new PropertyChangedEventArgs("Items")); }
private void OnBreakpointResume(object sender, BreakpointPauseEventArgs e) { Breakpoint = null; }