Beispiel #1
0
        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"));
        }
Beispiel #2
0
 private void OnBreakpointPause(BreakpointPauseEventArgs e)
 {
     BreakpointPause(this, e);
     bpaddr   = e.Address;
     bpstatus = e.Status;
     if (bpstatus == BreakpointStatus.SOF)
     {
         OnSimulateException(new StackOverflowException("子程序 & 用户函数嵌套调用超过了上限(256)。"), new RoutedEventArgs());
     }
 }
Beispiel #3
0
 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"));
        }
Beispiel #5
0
 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"));
 }
Beispiel #7
0
 private void OnBreakpointResume(object sender, BreakpointPauseEventArgs e)
 {
     Breakpoint = null;
 }