示例#1
0
        void CallBreak(VMachine vm, bool manulSwichPkgReg)
        {
            string pkgReg;

            if (manulSwichPkgReg)
            {
                pkgReg = _regPackageName.Value;
            }
            else
            {
                if (vm.CallStack.Count > 1)
                {
                    pkgReg = string.Empty;
                }
                else
                {
                    pkgReg = vm.CurrFrame.PkgName;
                }
            }

            var vms = new VMState(vm, pkgReg);

            SafeCall(delegate
            {
                if (OnBreak != null)
                {
                    OnBreak(vms);
                }
            });
        }
示例#2
0
        void OnBreak(VMState vms)
        {
            codeList.SetCurrLine(vms.Location);

            registerList.Items.Clear();
            foreach (var str in vms.Register)
            {
                registerList.Items.Add(str);
            }

            dataStackList.Items.Clear();
            foreach (var str in vms.DataStack)
            {
                dataStackList.Items.Add(str);
            }

            callStackList.Items.Clear();
            foreach (var str in vms.CallStack)
            {
                callStackList.Items.Add(str);
            }

            if (string.IsNullOrEmpty(vms.RegPackage))
            {
                pkgSel.SelectedIndex = 0;
            }
            else
            {
                if (pkgSel.SelectedItem as string != vms.RegPackage)
                {
                    foreach (var i in pkgSel.Items)
                    {
                        var pkgName = i as string;
                        if (pkgName == vms.RegPackage)
                        {
                            pkgSel.SelectedItem = i;
                            break;
                        }
                    }
                }
            }
        }